【语音定时播报系统】基于树莓派+百度语音合成打造语音定时播报系统

以下内容为本人原创
原文链接: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”
【语音定时播报系统】基于树莓派+百度语音合成打造语音定时播报系统_第1张图片
连接成功后将音频的输出设备更改为蓝牙音箱

五.使用树莓派播放语音

首先在树莓派中安装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杂文铺后台回复关键词定时播报即可获取哦.
【语音定时播报系统】基于树莓派+百度语音合成打造语音定时播报系统_第2张图片

创作不易 如果您觉得这篇文章对你有所帮助
可以轻轻点个小赞支持一下 这是对我们创作者最大的动力
谢谢支持 下期见

八.往期文章回顾

Yhen带你趣味入门Python①—Windows下Python下载及安装

【python热搜爬虫+定时发送邮件操作①】不会吧不会吧!不会2020了还有人需要用软件看微博热搜吧?

【python微博爬虫+定时发送邮件操作②】不会吧不会吧!不会2020了还有人需要用软件看微博热搜吧?

【爬虫+数据可视化】Yhen手把手带你爬取CSDN博客访问量数据并绘制成柱状图

【爬虫】Yhen手把手带你爬取去哪儿网热门旅游信息(并打包成旅游信息查询小工具

【实用小技巧】用python自动判断并删除目录下的空文件夹(超优雅)

【爬虫+数据库操作】Yhen手把手带你用pandas将爬取的股票信息存入数据库!

【selenium爬虫】
Yhen手把手带你用selenium自动化爬虫爬取海贼王动漫图片

【爬虫】秀才不出门,天下事尽知。你也能做到!Yhen手把手带你打造每日新闻资讯速达小工具。

【爬虫】Yhen手把手带你用python爬取知乎大佬热门文章

【爬虫】Yhen手把手教你爬取表情包,让你成为斗图界最靓的仔

【前端】学过一天的HTML+CSS后,能做出什么有趣的项目?

你可能感兴趣的:(树莓派,百度智能云,python,树莓派,百度语音合成,语音播报,爬虫)