在小藤上实现FastSpeech2文字转语音
【摘要】 在小藤上实现FastSpeech2文字转语音
登录开发板:
cd ${HOME}/ascend_community_projects/FastSpeech2
pip install -r requirements.txt
cd models
下载模型及依赖文件:
wget https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/Atlas%20200I%20DK%20A2/DevKit/models/23.0.RC2/fastspeech2.zip
解压并将文件挪到对应目录下:
unzip fastspeech2.zip
mv *.onnx ~/ascend_community_projects/FastSpeech2/models/
mv *.txt ~/ascend_community_projects/FastSpeech2/lexicon/
mv *.yaml ~/ascend_community_projects/FastSpeech2/config/
将onnx模型转为om模型:(文本长度限制为64,梅尔频谱图长度限制为250,文本长度不要超过256, 梅尔频谱图长度需在250,500,750,1000,1250,1500,1750,2000中选择,以降低模型推理时延)
cd ..
source /usr/local/Ascend/ascend-toolkit/set_env.sh
source /home/HwHiAiUser/mxVision-5.0.RC2/set_env.sh
sh ./atc_static.sh
报错了。
查看了下代码:
确实好像bs好像没定义。
这个要设置成什么呢?
先试试设置成1试试(瞎猫碰死老鼠。。)
可以看到5个om模型均已生成:
执行推理:合成语音的音调、音量和语速可以通过参数 --pitch_control, --energy_control 和 --duration_control 进行调节, 三个值的取值范围为(0.0, 2.0),默认值为1.0
cd ${HOME}/ascend_community_projects/FastSpeech2
python synthesize.py --text "欢迎使用华为昇腾Atlas200I DK A2开发者套件" --pitch_control 1.0 --energy_control 1.0 --duration_control 1.0
执行完毕后,output目录下生成了 wav文件:欢迎使用华为昇腾Atlas200I_DK_A2开发者套件.wav(空格之间都加了下划线)
将其下载到windows,使用potplayer播放:
放出来的声音是:女声,欢迎使用华为昇腾开发者套件。中间的英文没有念出来。
最后我们来做个小游戏,先用 FastSpeech2文字转语音 生成一个wav,然后将这个wav使用 WeNet自动语音识别。
python synthesize.py --text "据中央气象台消息,今年第十号台风达维在西北太平洋阳面上生成,气象局预计,达维将以每小时25到30公里的速度向东北方向移动。强度变化不大。" --pitch_control 1.0 --energy_control 1.0 --duration_control 1.0
生成的wav只生成到了 “据中央气象台消息,今年第十”这里。
cp 据中央气象台消息_今年第十号台风达维在西北太平洋阳面上生成_气象局预计_达维将以每小时25到30公里.wav ~/game001.wav
cd${HOME}/ascend_community_projects/SpeechRecognition
vi main.py修改文件名为 /home/HwHiAiUser/game001.wav
wav_file = '/home/HwHiAiUser/game001.wav'
python main.py
结果如下:
(base) HwHiAiUser@davinci-mini:~/ascend_community_projects/SpeechRecognition$ python main.py
[INFO] acl init success
[INFO] open device 0 success
[INFO] load model offline_encoder.om success
[INFO] create model description success
2023-08-27 16:10:25.169098: E external/org_tensorflow/tensorflow/core/framework/node_def_util.cc:675] NodeDef mentions attribute input_para_type_list which is not in the op definition: Op<name=Sum; signature=input:T, reduction_indices:Tidx -> output:T; attr=keep_dims:bool,default=false; attr=T:type,allowed=[DT_FLOAT, DT_DOUBLE, DT_INT32, DT_UINT8, DT_INT16, 6034766930529145842, DT_UINT16, DT_COMPLEX128, DT_HALF, DT_UINT32, DT_UINT64]; attr=Tidx:type,default=DT_INT32,allowed=[DT_INT32, DT_INT64]> This may be expected if your graph generating binary is newer than this binary. Unknown attributes will be ignored. NodeDef: {{node PartitionedCall_/ReduceSum_ReduceSum_670}}
据中央气象台消息今年第时
[INFO] unload model success, model Id is 1
[INFO] end to destroy context
[INFO] end to reset device is 0
[INFO] end to finalize acl
看起来不错。这个游戏还可以倒过来玩。
(全文完,谢谢阅读)
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)