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

 找回密码
 立即注册
查看: 10013|回复: 29

[插件集成] 免费开源离线本地中英文多语言语音合成Addon开发完毕测试...

[复制链接]

19

主题

290

帖子

1510

积分

论坛技术达人

积分
1510
金钱
1205
HASS币
130
发表于 2022-5-29 21:45:59 | 显示全部楼层 |阅读模式
本帖最后由 riceball 于 2022-6-9 17:59 编辑

为啥要弄离线语音合成?

简单来说,就是服务和产品分别,具体请见我前面写的 HA智能硬件采购避坑指要(一) Zigbee篇 的前述.

语音合成Addon的由来和简单介绍

内部测试,目前刚刚完成了常规语音合成和AI语音合成,基本可用.本来想偷个懒,直接在OpenTTS上改来着,可是不知道作者是废弃了OpenTTS还是什么原因,我的两个PR都没有回音.
所以干脆新开项目:  https://github.com/offline-ai/hassio-addons, 修改内容如下:

  • [X] Upgrade Coqui-TTS from 0.3.1 to latest version 0.7.0dev
    • [X] fix: Check if optional dependencies are installed before loading ZH/JA phonememizer
    • [X] Remove matplotlib (It is only useful during the train analysis phase).
    • [X] Optimal Coqui-TTS  Models Size
    • [ ] Optimal Coqui-TTS  Models on Embedded device
  • [X] Espeak Chinese locale missing
  • [X] Show used languages only
  • [X] Can not use SSML on HA
  • [X] Add preferred voice for language option

目前 tts-zh addon 包含中英文语言(enzh), 以及常规语音合成(ESpeak)和AI语音合成(Coqui)引擎

食用方法

点击添加仓库地址 Open your Home Assistant instance and show the dashboard of a Supervisor add-on.

或者手动添加仓库地址: https://github.com/offline-ai/hassio-addons

Offline TTS Addon 配置

可以在附加配置中设定各个语言的首选声音,对与盒子之类CPU比较弱的不妨设置首选声音为:

- lang: zh
  voice: espeak:zh-cmn
- lang: en
  voice: espeak:en-us

支持中英文多语言混和输入,直接在文本中输入:


<speak>
  <s lang="zh">欢迎使用离线语音合成 </s>
  <s lang="en-us">Welcome to Offline Speech Synthesis.</s>
</speak>


作了简单的Cache, 相同的话,第二次输出就快.

安装后, 修改   configuration.yaml file:

tts:
  - platform: marytts
    voice: tts:zh_baker # 默认语音, 如果是盒子,或者CPU性能较弱,请改为 espeak:zh-cmn

中英引擎对比以及语音列表如下

  • Coqui-TTS: Patched and embedded version of Coqui-TTS latest dev(0.7.0) version
    • TTS 系统名称:tts
    • 语音质量:好
    • 性能:不好,需要强大的 CPU 和足够的内存
    • 资源开销:高
    • 内置语音模型:
    • zh_baker: Chinese Voice from baker [F]
    • en_vctk: English Multi Speakers Voice [MF]
  • ESpeaker
  • TTS 系统名称:espeak
    • 语音质量:差,像机器人。
    • 性能:非常好
    • 资源开销:低
    • 内置语音模型:
    • en-029: English_(Caribbean) [M]
    • en-gb: English_(Great_Britain) [M]
    • en-gb-scotland: English_(Scotland) [M]
    • en-gb-x-gbclan: English_(Lancaster) [M]
    • en-gb-x-gbcwmd: English_(West_Midlands) [M]
    • en-gb-x-rp: English_(Received_Pronunciation) [M]
    • en-us: English_(America) [M]
    • zh-cmn: Chinese_(Mandarin) [M]
    • zh-yue: Chinese_(Cantonese) [M]

问题可能很多,请在本贴反馈.

Change logs

v1.2.1 (2022-06-07)

  • use log_level option instead of debug now
  • add preferred_voices option

v1.1.0 (2022-05-31)

Fix

  • the online validator of swagger error: Can't read from file...
  • Can not return voices on MaryTTS-compatible "/voices" endpoint

Feat

  • add zh translation
  • add tts-zh_lite, tts-en_lite

评分

参与人数 6金钱 +74 HASS币 +20 收起 理由
whxciotw + 20 高手,这是高手!
cybing + 1
hyperlau + 5 以为是青铜,原来是王者!
+ 20 + 20 高手,这是高手!
sirakawa + 12 厉害了word楼主!
dscao + 16 感谢楼主分享!

查看全部评分

回复

使用道具 举报

56

主题

929

帖子

4103

积分

论坛元老

Rank: 8Rank: 8

积分
4103
金钱
3174
HASS币
0
发表于 2022-5-29 22:48:12 | 显示全部楼层
强烈支持楼主的项目。试试看看。
回复

使用道具 举报

77

主题

1392

帖子

2万

积分

元老级技术达人

积分
24744
金钱
23312
HASS币
290
发表于 2022-5-30 15:59:00 | 显示全部楼层
本帖最后由 dscao 于 2022-5-30 16:26 编辑

用了一台j4205小主机pve装了hassos来测试,第一次日志中提示硬件不支持什么,但是过一段时间后声音出来了,tts:zh_baker ,效果还不算,不比百度差,比edge的那个差一些。
格式正好是wav的,给rf-bridge小盒子用都不需要转码的了。

后面测试“您好,现在可以在支持的媒体播放器上播报任意文本了!”第一次生成约15秒左右。
再改用espeak:zh-cmn ,同样的内容加了个符号,基本无延迟,0点几秒,但音效确实很差,还好能听懂 。
INFO:tts:Synthesizing with espeak:zh-cmn (22 char(s))...
DEBUG:tts:Synthesizing line 1: 现在可以在支持的媒体播放器上播报任意文本了!
DEBUG:tts:['espeak-ng', '-v', 'zh-cmn', '--stdout', "'现在可以在支持的媒体播放器上播报任意文本了!'"]
DEBUG:tts:Got 250524 WAV byte(s) for line 1
DEBUG:tts:Synthesized 250524 byte(s) in 0.16841387748718262 second(s)
DEBUG:tts:现在可以在支持的媒体播放器上播报任意文本了!!
INFO:tts:Synthesizing with espeak:zh-cmn (23 char(s))...
DEBUG:tts:Synthesizing line 1: 现在可以在支持的媒体播放器上播报任意文本了!!
DEBUG:tts:['espeak-ng', '-v', 'zh-cmn', '--stdout', "'现在可以在支持的媒体播放器上播报任意文本了!!'"]
DEBUG:tts:Got 263490 WAV byte(s) for line 1
DEBUG:tts:Synthesized 263490 byte(s) in 0.12467646598815918 second(s)
DEBUG:tts:现在可以在支持的媒体播放器上播报任意文本了!!
INFO:tts:Synthesizing with tts:zh_baker (23 char(s))...
DEBUG:tts:Synthesizing line 1: 现在可以在支持的媒体播放器上播报任意文本了!!
DEBUG:ttsrepared Say: 现在可以在支持的媒体播放器上播报任意文本了!
DEBUG:tts:Got 222284 WAV byte(s) for line 1
DEBUG:tts:Synthesized 222284 byte(s) in 15.597053289413452 second(s)

如果这里有个参数,能调整音质就更好了。一般情况几秒的延迟是可以接受的。那可以自己根据可接受的延迟时间和机器性能来输出尽量好的音质。固定内容的提醒首选高音质的,动态变化的内容最好是能设置音质参数的。
目前对小主机来说还是选用高音质的比较好。

不管怎么说,能离线语音合成也是厉害了。




回复

使用道具 举报

19

主题

290

帖子

1510

积分

论坛技术达人

积分
1510
金钱
1205
HASS币
130
 楼主| 发表于 2022-5-30 21:35:43 | 显示全部楼层
dscao 发表于 2022-5-30 15:59
用了一台j4205小主机pve装了hassos来测试,第一次日志中提示硬件不支持什么,但是过一段时间后声音出来了, ...

可以这样强制指定引擎和声音:

<speak>
  <voice name="tts:zh_baker">
    <s>欢迎使用离线语音合成 </s>
  </voice>
  <voice name="tts:en_vctk">
     <s> Welcome Text to Speech Synthesis.</s>
</voice>
</speak>


回复

使用道具 举报

18

主题

218

帖子

1834

积分

论坛技术达人

积分
1834
金钱
1616
HASS币
10
发表于 2022-5-31 09:15:07 | 显示全部楼层
没有ADDON可咋办咧
回复

使用道具 举报

19

主题

290

帖子

1510

积分

论坛技术达人

积分
1510
金钱
1205
HASS币
130
 楼主| 发表于 2022-5-31 17:37:52 | 显示全部楼层

也可以直接 docker 运行:

docker run --rm --name tts -it -p 59125:59125 riceball/tts:zh-latest

然后再HA的configure.yaml上的TTS配置中加上你运行该docker宿主的IP: host: your_ip, 如果有防火墙请打开59125端口.



回复

使用道具 举报

19

主题

290

帖子

1510

积分

论坛技术达人

积分
1510
金钱
1205
HASS币
130
 楼主| 发表于 2022-5-31 17:40:43 | 显示全部楼层
已经更新 v1.1.0

v1.1.0 (2022-05-31)

Fix

  • the online validator of swagger error: Can't read from file...
  • Can not return voices on MaryTTS-compatible "/voices" endpoint

Feat

  • add zh translation
  • add tts-zh_lite, tts-en_lite
回复

使用道具 举报

46

主题

332

帖子

3414

积分

论坛元老

Rank: 8Rank: 8

积分
3414
金钱
3082
HASS币
0
发表于 2022-5-31 19:02:22 | 显示全部楼层
牛逼,刚想要想这种,试试
回复

使用道具 举报

18

主题

218

帖子

1834

积分

论坛技术达人

积分
1834
金钱
1616
HASS币
10
发表于 2022-6-1 09:46:35 | 显示全部楼层
tts:zh_baker
“A002”
只播报一个2
回复

使用道具 举报

19

主题

290

帖子

1510

积分

论坛技术达人

积分
1510
金钱
1205
HASS币
130
 楼主| 发表于 2022-6-1 13:32:50 | 显示全部楼层
lhy741059930 发表于 2022-6-1 09:46
tts:zh_baker
“A002”
只播报一个2

zh_baker是纯中文TTS, 你必须手工指定en文:

<speak>
  <s lang="en-us">A</s>零零2
</speak>




回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-12-21 20:34 , Processed in 0.286082 second(s), 33 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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