node-red+百度TTS+小度dlna让小度开口说话

node-red+百度TTS+小度dlna让小度开口说话

测试流预览图:

准备工作:

1. nginx文件服务器的搭建,因为dlna是需要网络文件流进行播放的,不能使用本地路径的文件
2. dlnap.py脚本准备
3. function-npm节点安装

nginx服务器搭建根据各个系统不同,所以方法也不同,树莓派的安装很简单:sudo apt-get install nginx 其他系统请自行百度安装,此处只贴出配置文件

1. 安装完成后,查看nginx服务状态:`service nginx status` 如果为running,或者其他只要不报错不存在即可
2. 编辑配置文件,此处为树莓派配置示例:`vi /etc/nginx/conf.d/file.conf`

server {
        listen      80;
        server_name 192.168.4.175; # 你的nginx服务器的内网IP
        charset     utf-8;
        client_max_body_size 1000M;   # adjust to taste
        location / {
            alias /root/nodered/tts/; # 准备暴露的TTS文件路径,不存在的目录请自行新建,不然后报错
            autoindex on; # 浏览器是否可以访问目录
        }

}
3. 然后重启nginx服务,浏览器访问 http://192.168.4.175 (你的nginx服务器的IP) ,浏览器显示的即为你/root/nodered/tts/的文件

脚本文件下载链接: dlnap.py

脚本测试方法:

  1. 发现所有dlan设备: python3 dlnap.py --all 测试脚本是否能正常发现小度音响

  2. 播放音频: python3 dlnap.py --play 192.168.2.143(脚本发现的小度的IP) --play http://www.example.com/test.mp3(播放音频的URL,不支持本地路径文件,可以在本地搭建nginx文件服务,然后将音频文件中放在路径中)

如果以上测试成功了,那么就可以正式的接入node-red了

需要节点:

  1. function-npm 节点,需要自己手动安装,这个是百度tts需要使用的 其余节点已自动集成了

流下载链接 小度TTS node-red流

导入流之后修改百度文字转语音节点为你自己的账号信息,TTS的音频路径改成你的nginx文件目录,然后将IP地址改成你小度的IP,然后部署,触发第一个inject流,一个简单的TTS流就完成啦

有一个小坑,由于网络原因,和nr自身的原因,每一次部署function-npm节点,nr都会重新安装一次function-npm节点内引入的npm包,所以有时会安装失败,重新多部署几次即可

大神啊,这百度tts节点是啥啊?找不到啊。哎,小度的dlna实在是没法说了

先安装节点function-npm 再导入流