本帖最后由 ptbsare 于 2025-3-3 20:36 编辑
项目地址 : https://github.com/ptbsare/home-assistant-addons/tree/main/sherpa-onnx-tts-stt
我是项目作者,欢迎PR,欢迎提出宝贵意见。
一个addon集成了TTS及STT两个服务。
纯图形界面操作,官方原生支持Wyoming自动发现集成,无需安装HACS插件,无需修改配置文件。至少需要1.5G内存,建议使用强劲的CPU或者docker部署到性能较强的服务器上。 支持kokoro-TTS/matcha-TTS/paraformer-STT。
纯离线,所有模型均在本地部署运行,不向云端发送任何数据。
使用:
1、HASSOS添加addon repo: 点击↓
添加到我的Homeassistant
https://my.home-assistant.io/red ... me-assistant-addons 或者 手动添加如下repo到你的addon 加载项商店右上角三个点-仓库:https://github.com/ptbsare/home-assistant-addons
2、启动addon,正常会自动发现Wyoming,点击添加Wyoming集成即可。
3、在语音助手里面选择相应TTS及STT引擎。
备选:
如果你不是使用HASSOS,可以直接使用docker镜像,支持amd64及aarch64两种构架,直接启动镜像即可,也可配置环境变量:
docker pull ghcr.io/ptbsare/home-assistant-addons/amd64-addon-sherpa-onnx-tts-stt:0.2.6
复制代码
docker pull ghcr.io/ptbsare/home-assistant-addons/aarch64-addon-sherpa-onnx-tts-stt:0.2.6
复制代码
然后点击设备页面添加Wyoming集成:host填服务器或docker的IP,port填10400,提交保存即可。
详细说明:
目前默认参数即可运行,下面是详细参数配置说明,可自定义模型、语言、语速等,具体可见项目主页。
Configuration
Option: language
Default language to use. eg. en
Option: speed
TTS Speech Speed. eg. 1.0
Option: stt_model
Name of the model to use. eg. sherpa-onnx-paraformer-zh-2023-03-28 See the models section for more details.
Option: stt_use_int8_onnx_model
Enable int8 model to reduce memery usage. eg. True
Option: stt_thread_num
Number of Threads for TTS. eg. 3
Option: tts_model
Name of the model to use. eg. matcha-icefall-zh-baker
Option: tts_thread_num
Number of Threads for TTS. eg. 3
Option: tts_speaker_sid
TTS Speaker ID. eg. 0
Option: debug
Enable debug logging. eg. False
复制代码
群晖Container Manager项目部署:(@dscao)
version: "3.0"
services:
certimate:
image: ghcr.io/ptbsare/home-assistant-addons/amd64-addon-sherpa-onnx-tts-stt:0.2.6
container_name: sherpa-onnx-tts-stt
environment:
LANGUAGE: "zh-CN"
STT_MODEL: "sherpa-onnx-paraformer-zh-2023-03-28"
SPEED: "1.2"
STT_USE_INT8_ONNX_MODEL: "True"
STT_THREAD_NUM: "3"
TTS_MODEL: "matcha-icefall-zh-baker"
TTS_THREAD_NUM: "3"
TTS_SPEAKER_SID: "0"
DEBUG: "True"
ports:
- 10400:10400
restart: unless-stopped
复制代码
自定义模型例子(Docker/高阶用户):(@25989406)
version: "3.9"
services:
certimate:
image: ghcr.io/ptbsare/home-assistant-addons/amd64-addon-sherpa-onnx-tts-stt:0.2.8
container_name: sherpa-onnx-tts-stt
environment:
LANGUAGE: "zh-CN"
STT_USE_INT8_ONNX_MODEL: "True"
STT_THREAD_NUM: "8"
CUSTOM_TTS_MODEL: "vits-melo-tts-zh_en"
CUSTOM_TTS_MODEL_EVAL: |
sherpa_onnx.OfflineTts(
sherpa_onnx.OfflineTtsConfig(
model=sherpa_onnx.OfflineTtsModelConfig(
vits=sherpa_onnx.OfflineTtsVitsModelConfig(
model="/tts-models/vits-melo-tts-zh_en/model.onnx",
lexicon="/tts-models/vits-melo-tts-zh_en/lexicon.txt",
tokens="/tts-models/vits-melo-tts-zh_en/tokens.txt",
dict_dir="/tts-models/vits-melo-tts-zh_en/dict",
),
provider="cpu",
num_threads=8,
debug=True,
),
rule_fsts="/tts-models/vits-melo-tts-zh_en/phone.fst,/tts-models/vits-melo-tts-zh_en/date.fst,/tts-models/vits-melo-tts-zh_en/number.fst",
max_num_sentences=1,
)
)
DEBUG: "True"
ports:
- 10400:10400
restart: unless-stopped
复制代码
自定义模型例子(粤语stt例子)(Docker/高阶用户):(@z741554038)
language: zh-CN
speed: 1
stt_model: custom_stt_model
stt_use_int8_onnx_model: true
stt_thread_num: 3
tts_model: vits-melo-tts-zh_en
tts_thread_num: 3
tts_speaker_sid: 0
debug: true
custom_stt_model: sherpa-onnx-zipformer-cantonese-2024-03-13
custom_stt_model_eval: |-
sherpa_onnx.OfflineRecognizer.from_transducer(
encoder="/stt-models/sherpa-onnx-zipformer-cantonese-2024-03-13/encoder-epoch-45-avg-35.int8.onnx",
decoder="/stt-models/sherpa-onnx-zipformer-cantonese-2024-03-13/decoder-epoch-45-avg-35.int8.onnx",
joiner="/stt-models/sherpa-onnx-zipformer-cantonese-2024-03-13/joiner-epoch-45-avg-35.int8.onnx",
tokens="/stt-models/sherpa-onnx-zipformer-cantonese-2024-03-13/tokens.txt",
num_threads=3,
decoding_method="greedy_search",
provider="cpu",
sample_rate=16000,
feature_dim=80,
debug=True
)
复制代码
特别说明:
* 如果想提高TTS语速:在加载项图形选项里面调高speed的值(如设置成1.5),Docker请设置相应环境变量的值(SPEED=1.5)。
* 提高(尤其是kokoro-tts的合成)速度:建议将tts_thread_num和stt_thread_num设置成主机CPU物理核心的数量,如16核CPU就设置成16(默认为3),Docker请设置相应环境变量的值(TTS_THREAD_NUM和STT_THREAD_NUM),实测调高线程会较高提速。
* 关于kokoro-tts: 其中 kokoro-TTS 1.0(内置)为多语言模型,内置53位朗读者sid如下:
For kokoro-multi-lang-v1_0
There are 53 speakers in the model, with speaker ID 0 -- 52.
The mapping between speaker ID (AKA sid ) and speaker name is given below:
0->af_alloy, 1->af_aoede, 2->af_bella, 3->af_heart, 4->af_jessica, 5->af_kore, 6->af_nicole, 7->af_nova,
8->af_river, 9->af_sarah, 10->af_sky, 11->am_
adam, 12->am_echo, 13->am_eric, 14->am_fenrir, 15->am_liam, 16->am_michael,
17->am_onyx, 18->am_puck, 19->am_santa, 20->bf_alice, 21->bf_emma, 22->bf_
isabella, 23->bf_lily, 24->bm_daniel, 25->bm_fable, 26->bm_george, 27->bm_lewis,
28->ef_dora, 29->em_alex, 30->ff_siwis, 31->hf_alpha, 32->hf_beta, 33
->hm_omega, 34->hm_psi, 35->if_sara, 36->im_nicola, 37->jf_alpha,
38->jf_gongitsune, 39->jf_nezumi, 40->jf_tebukuro, 41->jm_kumo,
42->pf_dora, 43->pm_alex, 44->pm_santa, 45->zf_xiaobei, 46->zf_xiaoni,
47->zf_xiaoxiao,
48->zf_xiaoyi, 49->zm_yunjian, 50->zm_yunxi, 51->zm_yunxia, 52->zm_yunyang,
复制代码
kokoro-tts的中文效果建议使用名字有*yun*或者*xiao*的朗读者:例如TTS_SPEAKER_SID:45 设置成zf_xiaobei或者49 设置成 zm_yunjian,可以详见上面kokoro-tts的SID对应关系不断尝试不同朗读者找到合适的音色。
演示视频:
语音助手配置截图:
更新:
v0.2.6:已经支持kokoro-tts(内部集成),速度相对默认的matcha-tts略慢。
v0.2.8:实验性支持高阶用户自定义Sherpa Onnx 模型的类型、名字、参数,高阶用户可以自行指定模型及参数,插件会自动下载相应STT/TTS模型,完整模型列表详见:
STT: https://github.com/k2-fsa/sherpa-onnx/releases/tag/asr-models
TTS: https://github.com/k2-fsa/sherpa-onnx/releases/tag/tts-models
具体配置详见文档。https://github.com/ptbsare/home- ... on-custom_stt_model
普通用户暂时使用v0.2.6版本,编程爱好者欢迎使用v0.2.8反馈不同模型的效果。
v0.2.9:
* 实验性支持GPU运行!方便docker用户提速,详见github repo Dockerfile.gpu,因CUDA镜像较大(10G+),请GPU用户自行本地使用该Dockerfile.gpu文件自行构建运行镜像。
* 新增内置STT模型:sherpa-onnx-paraformer-zh-small-2024-03-09(默认paraformer模型的微缩版本)供性能较差小主机STT使用提速,效果也非常不错,更加快速,内存占用更低;
* 新增内置TTS模型:vits-melo-tts-zh_en,这是一个中英文模型,可以同时说中文与英语,速度介于matcha-icefall-zh-baker与kokoro-multi-lang-v1_0之间。
评分
查看全部评分