樹莓派之天氣預報語音播報

2021-09-17 00:04:56 字數 2176 閱讀 5283

具體實施

前幾天跟同事在聊家裡的「小愛同學」可以語音報天氣,聽起來不錯,也想要乙個。不過嘛,作為技術宅的本人,如果買乙個的話,是不是太low了,於是想到家裡萬能的樹莓派,實現這個功能應該是問題不大的。開始了折騰。

原則1:不對樹莓派硬體進行大的改動;

原則2:我們一定要用開源或者免費的方案;

要獲取天氣預報資訊

要組合成相應文字

文字轉語音

語音播報

定時執行

在和風天氣**註冊個帳號,拿到key,用post請求就可以得到返回的json格式資料了:

成都&key=*********************************xx

返回資料:

這裡有個前提,因為ilang是基於python2.7的,所以系統中必須要有python2.7;

正常情況下輸入以下命令:

sudo apt-get install mpg123

sudo pip install ilangbd

完成後測試

ilang 「你好,world!」

注意不要在hdmi介面上聽,否則聽不到最前面的兩個字,所以用音箱直接連樹莓派的音訊輸出吧;

如果還有疑問請參考這篇部落格:樹莓派使用ilangbd庫進行python進行中文文字轉語音

好了,現在把它們串起來,下面是python3.4的**:(我的系統裝了python3.4和python2.7兩個版本的python)

import json

import os

import requests

postdata =

stra = requests.post('', data=postdata)

json_obj = json.loads(stra.text)

w0 = json_obj['heweather6'][0]

wether = w0['daily_forecast'][1]

outstr = '明天天氣轉,溫度到攝氏度.'.format(wether['cond_txt_d'], wether['cond_txt_n'], wether['tmp_max'], wether['tmp_min'])

cmdline = 'ilang "' + outstr + '"'

os.system(cmdline)

儲存為analysisweather.py,ok,如果不出什麼意外,到目前為止,在命令列中輸入:

python3 analysisweather.py

應該可以聽到它播報出正常的天氣語音了;那麼我們的工作是不是快結束了呢?還沒有,後面還有乙個大坑,對那就是crontab。

crontab是linux的定時任務,看起來是很ok的對不對。它的坑就是它沒有環境變數的支援,所以你的python2,python3的位置,以及其它自己要定義的環境變數都要自行設定,否則就會出一經典的一幕:在命令列裡執行的好好的程式,在crontab裡死活不執行。不說了,具體的是這樣,把上面的命令放到乙個shell命令檔案裡:

alarm.sh:

#!/bin/bash

source /etc/profile

source /home/pi/.bashrc

cd /home/pi/al_clock

python3 analysisweather.py

好了,在命令列再試一下:

/home/pi/al_clock/alarm.sh

有聲音就ok了,最後放到crontab裡面:

crontab -e

#auto rebort weather with void for

30 7 * * * /home/pi/al_clock/alarmd.sh

每天早上7點半播報天氣

大功告成!

我們的口號是:我們要玩樹莓派,不要被樹莓派玩兒!

Linux下的語音天氣預報指令碼

本文映象自作者blog http www.csksoft.net blog post linux weatherforecast.html 這是最近我剛在家裡部署的乙個程式,主要功能就是在每天的特定時間 7 30 以及 18 30 計算機將自動用中文人聲朗讀出當天以及後一天的天氣情況 預報。天氣預報...

swift網路之json(天氣預報)

swift網路程式設計筆記 學啥語言涉及到網路是基本上都是先來個天氣預報,這裡也不例外,推薦乙個json資料 基本夠用了 github 很醜,只是為了實現功能 主要的邏輯 沒有什麼內容,把需要的資訊封裝成struct,都加了注釋 struct weather class viewcontroller...

Android應用例項之 天氣預報程式

今天這個程式的功能是天氣預報查詢 首先看一下效果圖 初始化介面 查詢結果 這個原創是來自我覺得是乙個不錯的例子,資料是通過google weather api獲取的,例如我們在瀏覽器裡輸入以下 得到結果是xml資料 查詢不同的地方只要把 號後面換成你想要的城市名就ok了,好像不支援中文,只支援拼音 ...