以下内容为本人原创
原文链接:https://blog.csdn.net/Yhen1/article/details/113812520
作者:@Yhen
发布网站:CSDN
未经本人同意禁止转载,如需转载请说明此出处,违者必究
大噶好,我是Yhen
这篇文章带给大家的经验分享是树莓派+百度语音识别打造语音定时播报系统
2021.09.22更新
好消息好消息!我发现百度智能云现在可以免费体验云服务器啦
领取流程可以参考这篇文章哦
「云服务器」白嫖3个月百度智能云4M60G云服务器
一.项目目标
每天在 8:00-23:00的 每个整点时准时报时并播报当前的室内实时温度
二.前期准备
下面是本篇文章所要用到的物品
1.树莓派
2.DS18B20温度传感器
3.蓝牙音箱(其实是个能连接树莓派的音箱都可以,但本篇仅以蓝牙音箱做演示)
4.百度智能云账号
5.所需安装的Python第三方库(pip install +库名)
①schedule
②baidu-aip
③datetime
导入Python第三方库
from aip import AipSpeech
import time
import schedule
import os
import datetime
三.获取树莓派的温度
具体的获取方法我之前在这篇文章中已经有说到了
【室内温度+树莓派性能监控】树莓派+DS18B20温度传感器+0.96寸OLED显示屏使用及安装经验分享
这里就不再累赘了,直接贴个代码吧
tfile = open("/sys/bus/w1/devices/28-01202913b0f4/w1_slave")
text = tfile.read()
tfile.close()
secondline=text.split("\n")[1]
temperaturedata = secondline.split(" ")[9]
temperature = float(temperaturedata[2:])
temperature =round( temperature / 1000,2)
这里的temperature就是温度传感器检测到的温度
PS:这里的28-01202913b0f4每个人都不一样的,具体还是请看上面的文章
代码封装:
def get_weatherresport():
# 获取当前的时间 '%Y-%m-%d %H:%M:%S' 获取时间的年月日 时分秒
now=datetime.datetime.now().strftime('%H')
# 获取当前的温度值
tfile = open("/sys/bus/w1/devices/28-01202913b0f4/w1_slave")
text = tfile.read()
tfile.close()
secondline = text.split("\n")[1]
temperaturedata = secondline.split(" ")[9]
temperature = float(temperaturedata[2:])
temperature = round(temperature / 1000, 2)
#前面加上00因为树莓派的omxplayer软件用蓝牙耳机播放语音时前面会有一点听不到,所以要放两个0来占位,如无出现此问题,请删掉!
text='00现在是北京时间'+str(now)+'时。'+'现在的温度是'+str(temperature)+'摄氏度哦'
print(text)
return text
四.调用百度语音合成接口
这一步是调用百度的语音合成接口,将文字转为语音
关于百度智能云项目的创建方法我之前也在这篇文章中写到过了
Yhen手把手带你使用百度智能云①----项目的创建
但是这次需要用到的是语音合成接口
https://ai.baidu.com/tech/speech/tts_online
创建好应用后查看自己的AppID,API Key以及Secret Key
并填入下面的代码中
""" 你的 APPID AK SK """
APP_ID = '填你自己的appid'
API_KEY = '填你自己的apikey'
SECRET_KEY = '填你自己的secretkey'
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
result = client.synthesis(weather, 'zh', 1, {
'vol': 5, #音量,取值0-15,默认为5中音量
'per':3, #发音人 发音人选择, 0为女声,1为男声,3为情感合成-度逍遥,4为情感合成-度丫丫,默认为普通女
'spd':4
#语速 语速,取值0-9,默认为5中语速
})
# 识别正确返回语音二进制 错误则返回dict 参照下面错误码
if not isinstance(result, dict):
with open('auido.mp3', 'wb') as f:
f.write(result)
time.sleep(1)
f.close()
更详细的介绍请看官方文档
https://ai.baidu.com/ai-doc/SPEECH/Gk4nlz8tc
代码封装:
def Speech_recognition(weather):
""" 你的 APPID AK SK """
APP_ID = 'xxxxxx'
API_KEY = 'xxxxxx'
SECRET_KEY = 'xxxxxx'
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
result = client.synthesis(weather, 'zh', 1, {
'vol': 5, #音量,取值0-15,默认为5中音量
'per':3, #发音人 发音人选择, 0为女声,1为男声,3为情感合成-度逍遥,4为情感合成-度丫丫,默认为普通女
'spd':4
#语速 语速,取值0-9,默认为5中语速
})
# 识别正确返回语音二进制 错误则返回dict 参照下面错误码
if not isinstance(result, dict):
with open('auido.mp3', 'wb') as f:
f.write(result)
time.sleep(1)
f.close()
五.树莓派连接蓝牙音箱
首先在图形界面中点击“蓝牙”图标
点击“Add device”
找到自己的蓝牙音箱设备后点击“Pair”
连接成功后将音频的输出设备更改为蓝牙音箱
五.使用树莓派播放语音
首先在树莓派中安装omxplayer库
apt-get install omxplayer
在Python中用os模块执行linux指令
os.system('omxplayer -o alsa auido.mp3')
六.创建定时任务 定时播报语音
首先将上面两个函数封装在一个任务函数中
def job():
weather=get_weatherresport()
Speech_recognition(weather)
设置在每天的早上8点到晚上的11点整执行语音播报任务.
schedule.every().day.at("08:00").do(job)
schedule.every().day.at("09:00").do(job)
schedule.every().day.at("10:00").do(job)
schedule.every().day.at("11:00").do(job)
schedule.every().day.at("12:00").do(job)
schedule.every().day.at("13:00").do(job)
schedule.every().day.at("14:00").do(job)
schedule.every().day.at("15:00").do(job)
schedule.every().day.at("16:00").do(job)
schedule.every().day.at("17:00").do(job)
schedule.every().day.at("18:00").do(job)
schedule.every().day.at("19:00").do(job)
schedule.every().day.at("20:00").do(job)
schedule.every().day.at("21:00").do(job)
schedule.every().day.at("22:00").do(job)
schedule.every().day.at("23:00").do(job)
while True:
schedule.run_pending() #run_pending:运行所有可以运行的任务
后台执行Python程序
nohup python3 Timing_Task.py &
到这里已经完成了
那么你就可以在每天早上8点到晚上11点整时都可以听到
“现在是北京时间xxx时,现在的温度是xxx”了
七.完整代码获取
扫码关注我的微信公众号Yhen杂文铺后台回复关键词定时播报即可获取哦.
创作不易 如果您觉得这篇文章对你有所帮助
可以轻轻点个小赞支持一下 这是对我们创作者最大的动力
谢谢支持 下期见
八.往期文章回顾
Yhen带你趣味入门Python①—Windows下Python下载及安装
【python热搜爬虫+定时发送邮件操作①】不会吧不会吧!不会2020了还有人需要用软件看微博热搜吧?
【python微博爬虫+定时发送邮件操作②】不会吧不会吧!不会2020了还有人需要用软件看微博热搜吧?
【爬虫+数据可视化】Yhen手把手带你爬取CSDN博客访问量数据并绘制成柱状图
【爬虫】Yhen手把手带你爬取去哪儿网热门旅游信息(并打包成旅游信息查询小工具
【实用小技巧】用python自动判断并删除目录下的空文件夹(超优雅)
【爬虫+数据库操作】Yhen手把手带你用pandas将爬取的股票信息存入数据库!
【selenium爬虫】
Yhen手把手带你用selenium自动化爬虫爬取海贼王动漫图片
【爬虫】秀才不出门,天下事尽知。你也能做到!Yhen手把手带你打造每日新闻资讯速达小工具。
【爬虫】Yhen手把手带你用python爬取知乎大佬热门文章