『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
楼主: sasukebinbin

[新奇玩法] 更新: TTS教程 -DIY WiFi音响 - TTS,播放Mp3,成品样样都要有

  [复制链接]

0

主题

2

帖子

26

积分

新手上路

Rank: 1

积分
26
金钱
24
HASS币
0
发表于 2021-10-20 12:46:59 | 显示全部楼层
厉害了,word楼主!!
回复

使用道具 举报

0

主题

24

帖子

171

积分

注册会员

Rank: 2

积分
171
金钱
147
HASS币
0
发表于 2021-10-20 12:56:58 | 显示全部楼层
学习一下!
回复

使用道具 举报

0

主题

25

帖子

853

积分

高级会员

Rank: 4

积分
853
金钱
828
HASS币
0
发表于 2021-10-23 10:19:08 来自手机 | 显示全部楼层
看看看看看
回复

使用道具 举报

46

主题

325

帖子

3154

积分

论坛元老

Rank: 8Rank: 8

积分
3154
金钱
2829
HASS币
0
发表于 2021-10-23 14:36:50 | 显示全部楼层
求TTS教程
回复

使用道具 举报

2

主题

84

帖子

593

积分

高级会员

Rank: 4

积分
593
金钱
509
HASS币
5
发表于 2021-10-23 16:41:45 | 显示全部楼层
楼主,能把视频里的tts源码分享一下吗?哎,不懂编程的痛啊。
回复

使用道具 举报

24

主题

623

帖子

2756

积分

金牌会员

Rank: 6Rank: 6

积分
2756
金钱
2123
HASS币
40
 楼主| 发表于 2021-10-24 01:17:28 | 显示全部楼层
本帖最后由 sasukebinbin 于 2021-10-24 23:03 编辑

中文TTS教程来了

1. 首先在辅助元素里创建一个文本元素, 名称叫tts_msg, 也可以为其他的,但是要修改并确保实体ID为input_text.tts_msg
这里就是你输入TTS文本的地方
2. 这里开始在Nodered上进行
截屏2021-10-24 上午12.46.23.png
大家可以复制下面的内容到剪切板,然后选择导入剪切板并粘贴内容, 记得选择新流程选项
[{"id":"1c893a2.860cac6","type":"tab","label":"TTS 例子","disabled":false,"info":""},{"id":"f3e70c14.b85b7","type":"http request","z":"1c893a2.860cac6","name":"Get TTS URL","method":"POST","ret":"obj","paytoqs":true,"url":"https://xxxxx/api/tts_get_url","tls":"","proxy":"","authType":"bearer","x":1030,"y":380,"wires":[["2ce1858.4ed177a"]]},{"id":"4983eb78.0e97e4","type":"debug","z":"1c893a2.860cac6","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":1650,"y":380,"wires":[]},{"id":"3adfb74.8ed4648","type":"function","z":"1c893a2.860cac6","name":"Set Header","func":"\n\nmsg.headers = {};\nmsg.headers={\n    'Content-Type': 'application/json'\n};\nmsg.payload = {};\n\n\nreturn msg","outputs":1,"noerr":0,"x":470,"y":380,"wires":[["7f76426b.3178ac"]]},{"id":"7f76426b.3178ac","type":"http request","z":"1c893a2.860cac6","name":"Get TTS Text","method":"GET","ret":"obj","paytoqs":true,"url":"https://xxxxx/api/states/input_text.tts_msg","tls":"","proxy":"","authType":"bearer","x":650,"y":380,"wires":[["85e920ac.9be84"]]},{"id":"ac8fe3a0.fc39b","type":"inject","z":"1c893a2.860cac6","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":290,"y":380,"wires":[["3adfb74.8ed4648"]]},{"id":"85e920ac.9be84","type":"function","z":"1c893a2.860cac6","name":"Microsoft TTS","func":"let tts = msg.payload.state\n\nmsg.headers = {};\nmsg.headers={\n    'Content-Type': 'application/json'\n};\n\nmsg.payload = {\n    "message": tts,\n    "platform": "edge_tts",\n    "language": "zh-CN",\n    "options": {\n        "voice":"zh-CN-XiaomoNeural",\n        "style": "cheerful",\n        "role": "girl",\n        "pitch": "+6Hz",\n        "rate": "-20%",\n    }\n};\n\n\n\nreturn msg","outputs":1,"noerr":0,"x":840,"y":380,"wires":[["f3e70c14.b85b7"]]},{"id":"2ce1858.4ed177a","type":"function","z":"1c893a2.860cac6","name":"MQTT Post","func":"\nvar obj = {};\nlet path = msg.payload.path;\nobj.url = "http://xxxxxx" + path ;\n\n\n\nmsg.headers = {};\nmsg.headers={\n    'Content-Type': 'application/json'\n};\n\nmsg.payload = {};\nmsg.payload={ \n    "payload": obj.url,\n    "topic": mrdiynotifier/play\n};\n\n\n\nreturn msg","outputs":1,"noerr":0,"x":1250,"y":380,"wires":[["5b94506.36c38b"]]},{"id":"5b94506.36c38b","type":"http request","z":"1c893a2.860cac6","name":"MQTT Publish","method":"POST","ret":"obj","paytoqs":true,"url":"https://xxxxx/api/services/mqtt/publish","tls":"","proxy":"","authType":"bearer","x":1460,"y":380,"wires":[["4983eb78.0e97e4"]]},{"id":"8673bf32.bb753","type":"ha-entity","z":"1c893a2.860cac6","name":"Run TTS","server":"632e5794.b26868","version":1,"debugenabled":false,"outputs":2,"entityType":"switch","config":[{"property":"name","value":"run_tts"},{"property":"device_class","value":""},{"property":"icon","value":""},{"property":"unit_of_measurement","value":""}],"state":"payload","stateType":"msg","attributes":[],"resend":true,"outputLocation":"","outputLocationType":"none","inputOverride":"allow","outputOnStateChange":false,"outputPayload":"$entity().state ? "on": "off"","outputPayloadType":"jsonata","x":280,"y":500,"wires":[["3adfb74.8ed4648"],[]]},{"id":"632e5794.b26868","type":"server","z":"","name":"Home Assistant","legacy":false,"addon":false,"rejectUnauthorizedCerts":false,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true}]
附件json文件防止导入流失败 flows.json.zip (1.75 KB, 下载次数: 94)

接下来是说明需要修改的部分
第3个, Get TTS Text 就是获取你在第一步创建的文本元素当前的内容
截屏2021-10-24 上午12.44.03.png
这里要求改URL中的xxxx部分到你的IP地址或域名. Http还是Https
以及用户名和密码. 密码是HA中生产的Bearer密码

第4个是准备生成TTS,我用的edge TTS,你也可以换成你的,Baidu或谷歌
截屏2021-10-24 上午12.44.48.png
给大家一个谷歌的例子
let tts = msg.payload.state
msg.headers = {};
msg.headers={
    'Content-Type': 'application/json'
};
msg.payload = {
    "message": tts,
    "platform": "google_translate",
    "language": "zh-cn"
};

return msg



第5个是获取刚刚生成的TTS的URL
截屏2021-10-24 上午12.45.27.png
同样这里要修改URL,用户名和密码

第6个是,准备通过http post发送MQTT publish的内容
截屏2021-10-24 上午12.45.54.png
这里要修改的是url部分xxx的内容和http还是https
如果有修改默认topic的前缀mrdiynotifier的话,请修改为正确的

第7个就是发送MQTT publish了.
截屏2021-10-24 上午12.46.14.png
这里跟上面一样, 修改URL,用户名和密码

Nodered 修改完毕
这时, 你在HA里面把新建的文本元素显示出来,在里面输入几个字. 然后点击时间戳, 音箱应该就会播放TTS了
3. 这一步是如何在HA里自动化而不用在Nodered里手动点击.
因为之前在Node里创建了一个叫Run TTS的Switch, 这个会在HA中生成一个开关 entity_id是switch.run_tts.
请大家在工具中确保这个开关已生成,没有的话,可能要重启一个HA
之后就是创建一个脚本.调用nodered switch就可以了.
然后就把脚本在HA的front中显示出来.

截屏2021-10-24 上午1.13.41.png

大功告成

一些额外信息, 我用了custom:button-card 所以以按钮形式启动脚本了.
如果有安装的,可以直接复制代码
type: custom:button-card
tap_action:
  action: call-service
  service: script.turn_on
  service_data:
    entity_id: script.run_tts
name: Run TTS
size: 45%
styles:
  card:
    - height: 40px
  name:
    - font-size: 13.5px






回复

使用道具 举报

24

主题

623

帖子

2756

积分

金牌会员

Rank: 6Rank: 6

积分
2756
金钱
2123
HASS币
40
 楼主| 发表于 2021-10-24 01:26:57 | 显示全部楼层
fpsonic 发表于 2021-10-14 16:05
那个要中文TTS怎么做,都是英文的,

请看28楼回复
回复

使用道具 举报

24

主题

623

帖子

2756

积分

金牌会员

Rank: 6Rank: 6

积分
2756
金钱
2123
HASS币
40
 楼主| 发表于 2021-10-24 01:28:21 | 显示全部楼层
henry2022 发表于 2021-10-22 21:59
为啥我rx引脚要并联一个20uF左右的电容声音才能好听呢

你的功放用的是一样的吗. 声音才能好听是什么意思?
回复

使用道具 举报

24

主题

623

帖子

2756

积分

金牌会员

Rank: 6Rank: 6

积分
2756
金钱
2123
HASS币
40
 楼主| 发表于 2021-10-24 10:32:44 | 显示全部楼层
henry2022 发表于 2021-10-24 07:34
8403的音频输入直接接RX引脚GND也是8266的gnd,那音质噼里啪啦的,听起来很难听,并非接入不良。8403必须 ...

你看我的图片, 8403的供电是单独的,不是从8266上走的.  我是用一个Micro USB母头, 正极出2根,负极出2根,分别给8266和8403供电的. 另外你说的视频中的功能是指什么功能.
TTS一定要使用NR.
选择播放mp3不用
回复

使用道具 举报

0

主题

28

帖子

124

积分

注册会员

Rank: 2

积分
124
金钱
95
HASS币
0
发表于 2021-10-24 11:17:54 来自手机 | 显示全部楼层
这个看看
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-4-26 12:23 , Processed in 3.901005 second(s), 32 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表