k2-fsa / sherpa-onnx

Speech-to-text, text-to-speech, speaker recognition, and VAD using next-gen Kaldi with onnxruntime without Internet connection. Support embedded systems, Android, iOS, Raspberry Pi, RISC-V, x86_64 servers, websocket server/client, C/C++, Python, Kotlin, C#, Go, NodeJS, Java, Swift, Dart, JavaScript, Flutter, Object Pascal, Lazarus, Rust
https://k2-fsa.github.io/sherpa/onnx/index.html
Apache License 2.0
3.27k stars 381 forks source link

用sherpa-onnx-offline-tts-play.exe测试TTS的时候,阿拉伯数字和英文字符不发声 #474

Closed sqfeng-1 closed 10 months ago

sqfeng-1 commented 10 months ago

你好!sherpa-onnx-offline-tts-play.exe测试TTS的时候,用的vits-zh-aishell3模式包内参数,运行脚本如下: sherpa-onnx-offline-tts-play.exe --vits-model=.\zh_CN-huayan-medium.onnx --vits-tokens=.\tokens.txt --vits-lexicon=.\lexicon.txt --sid=60 --output-filename=.\rule-60.wav "根据第7次全国人口普查结果表明,我国总人口有1443497378人。普查登记的大陆31个省、自治区、直辖市和现役军人的人口共1411778724人。" 这时能发声,但是阿拉伯数字不发音,同时也测过英文字母也不发音。 脚本中增加此参数:--tts-rule-fsts=.\rule.fst ,运行程序不发声,生成的音频文件也不发声。 请问有支持中、英文和阿拉伯数字的模式包吗?

csukuangfj commented 10 months ago

目前只有 vits-zh-aishell3 这个模型,可以和 --tts-rule-fsts 一起用.

zh_CN-huayan-medium 目前只支持中文,不支持中文以外的字符。

阿拉伯数字和字母,都不是中文,所以这个模型都不支持。

sqfeng-1 commented 10 months ago

上面运行脚本贴错了,用的是这个: sherpa-onnx-offline-tts.exe --vits-model=.\vits-aishell3.onnx --vits-lexicon=.\lexicon.txt --vits-tokens=.\tokens.txt --sid=60 --output-filename=.\rule-60.wav "根据第7次全国人口普查结果表明,我国总人口有1443497378人。普查登记的大陆31个省、自治区、直辖市和现役军人的人口共1411778724人。UPS电源系统"

csukuangfj commented 10 months ago

上面运行脚本贴错了,用的是这个: sherpa-onnx-offline-tts.exe --vits-model=.\vits-aishell3.onnx --vits-lexicon=.\lexicon.txt --vits-tokens=.\tokens.txt --sid=60 --output-filename=.\rule-60.wav "根据第7次全国人口普查结果表明,我国总人口有1443497378人。普查登记的大陆31个省、自治区、直辖市和现役军人的人口共1411778724人。UPS电源系统"

这个的问题是什么呢

sqfeng-1 commented 10 months ago

加上参数--tts-rule-fsts ,不发声

csukuangfj commented 10 months ago

不加,是只有汉字的发声是正常的么?

csukuangfj commented 10 months ago

请问有支持中、英文和阿拉伯数字的模式包吗?

aishell3 这个模型,支持中文。 使用了 rule.fst 后,支持阿拉伯数字

sqfeng-1 commented 10 months ago

不加汉字发声正常,只有英文和阿拉伯数字不发声,但是用rule.fst都没有声音,这是什么问题

csukuangfj commented 10 months ago

你用的是最新的代码么

csukuangfj commented 10 months ago

请使用--debug=1 然后把加和不加 rule.fst 的输出贴出来。

sqfeng-1 commented 10 months ago

好的,我试试,网络太卡了响应慢

sqfeng-1 commented 10 months ago

这是加rule.fst的: D:\LDC_Project\software\audio_process\sherpa-onnx-git\sherpa-onnx\build\bin\Release\vits-zh-aishell3>tts-play.bat

D:\LDC_Project\software\audio_process\sherpa-onnx-git\sherpa-onnx\build\bin\Release\vits-zh-aishell3>sherpa-onnx-offline-tts-play.exe --vits-model=.\vits-aishell3.onnx --vits-lexicon=.\lexicon.txt --vits-tokens=.\tokens.txt --tts-rule-fsts=.\rule.fst --debug=1 --sid=66 --output-filename=.\rule-66.wav "鏍规嵁绗?娆″叏鍥戒汉鍙f櫘鏌ョ粨鏋滆〃鏄庯紝鎴戝浗鎬讳汉 鍙f湁1443497378浜恒€傛櫘鏌ョ櫥璁扮殑澶ч檰31涓渷銆佽嚜娌诲尯銆佺洿杈栧競鍜岀幇褰瑰啗浜虹殑浜哄彛鍏?411778724浜恒€俇PS鐢垫簮绯荤粺" D:\LDC_Project\software\audio_process\sherpa-onnx-git\sherpa-onnx\sherpa-onnx\csrc\parse-options.cc:Read:361 sherpa-onnx-offline-tts-play.exe '--vits-model=.\vits-aishell3.onnx' '--vits-lexicon=.\lexicon.txt' '--vits-tokens=.\tokens.txt' '--tts-rule-fsts=.\rule.fst' --debug=1 --sid=66 '--output-filename=.\rule-66.wav' '鏍规嵁绗?娆″叏鍥戒汉鍙f櫘鏌ョ粨鏋滆〃 鏄庯紝鎴戝浗鎬讳汉鍙f湁1443497378浜恒€傛櫘鏌ョ櫥璁扮殑澶ч檰31涓渷銆佽嚜娌诲尯銆佺洿杈栧競鍜岀幇褰瑰啗浜虹殑浜哄彛鍏?411778724浜恒€俇PS鐢垫簮绯荤粺'

Num devices: 17 Use default device: 3 Name: 鑰虫満 (Realtek(R) Audio) Max output channels: 2 Setting config.max_num_sentences to 1 Loading the model D:\LDC_Project\software\audio_process\sherpa-onnx-git\sherpa-onnx\sherpa-onnx\csrc\offline-tts-vits-model.cc:Init:79 ---vits model--- punctuation=, . : ; ! ? 锛?銆?锛?锛?锛?锛?銆? model_type=vits comment=aishell3 language=Chinese add_blank=0 n_speakers=174 sample_rate=8000 ----------input names---------- 0 x 1 x_length 2 noise_scale 3 length_scale 4 noise_scale_w 5 sid ----------output names---------- 0 y

D:\LDC_Project\software\audio_process\sherpa-onnx-git\sherpa-onnx\sherpa-onnx/csrc/offline-tts-vits-impl.h:OfflineTtsVitsImpl:44 rule fst: .\rule.fst Start the playback thread Generating ... D:\LDC_Project\software\audio_process\sherpa-onnx-git\sherpa-onnx\sherpa-onnx/csrc/offline-tts-vits-impl.h:Generate:100 Raw text: 鏍规嵁绗?娆″叏鍥戒汉鍙f櫘鏌ョ粨鏋滆〃鏄庯紝鎴戝浗鎬讳汉鍙f湁1443497378浜恒€傛櫘鏌ョ櫥璁扮殑澶ч檰31涓渷銆佽 嚜娌诲尯銆佺洿杈栧競鍜岀幇褰瑰啗浜虹殑浜哄彛鍏?411778724浜恒€俇PS鐢垫簮绯荤粺 D:\LDC_Project\software\audio_process\sherpa-onnx-git\sherpa-onnx\sherpa-onnx/csrc/offline-tts-vits-impl.h:Generate:107 After normalizing: Input text in string: Input text in bytes: After splitting to words: Generating done! Elapsed seconds: 0.093 s Audio duration: 0.448 s Real-time factor (RTF): 0.093/0.448 = 0.208 The text is: 鏍规嵁绗?娆″叏鍥戒汉鍙f櫘鏌ョ粨鏋滆〃鏄庯紝鎴戝浗鎬讳汉鍙f湁1443497378浜恒€傛櫘鏌ョ櫥璁扮殑澶ч檰31涓渷銆佽嚜娌诲尯銆佺洿杈栧競鍜岀幇褰瑰啗浜虹殑浜哄彛鍏?411778724浜恒€俇PS鐢垫簮绯荤粺. Speaker ID: 66

Saved to .\rule-66.wav successfully!

Wait for the playback to finish. You can safely press ctrl + C to stop the playback. Done!

D:\LDC_Project\software\audio_process\sherpa-onnx-git\sherpa-onnx\build\bin\Release\vits-zh-aishell3>

csukuangfj commented 10 months ago

https://k2-fsa.github.io/sherpa/onnx/tts/faq.html#how-to-enable-utf-8-on-windows

请参考这个链接,先设置编码为 utf8.

你这个都乱码了

sqfeng-1 commented 10 months ago

改编码为UTF8就好了,非常谢谢!要是中、英文和阿拉伯数字都支持就更好了!期待!

csukuangfj commented 10 months ago

改编码为UTF8就好了,非常谢谢!要是中、英文和阿拉伯数字都支持就更好了!期待!

以后会有的,放心。