算能开发者社区
直播中

裸奔小耗子

6年用户 44经验值
擅长:嵌入式技术 处理器/DSP 控制/MCU
私信 关注

【算能RADXA微服务器试用体验】+ GPT语音与视觉交互:4,文字转语音

文字转语音使用的技术简称为TTS。一般情况下我用的都是在线的EDGE-TTS服务。但非常幸运的是,BM1684X上居然有适配好的本地运行TTS,那自然是要体验一番。

先转到project文件夹下,克隆下整个仓库,并切换到radxa_v0.1.2分支:

cd /data/project
git clone https://github.com/zifeng-radxa/EmotiVoice-TPU.git
cd EmotiVoice-TPU
git checkout radxa_v0.1.2

接下来下载模型

cd model_file
wget https://github.com/radxa-edge/TPU-Edge-AI/releases/download/EmotiVoice/EmotiVoice_bmodels.tar.gz
tar -xvf EmotiVoice_bmodels.tar.gz
mv ./EmotiVoice_bmodels/* .

下面下载nltk数据,由于python包中自动下载部分基本都会下载失败,因此我们先手动下载下来。

git clone https://github.com/nltk/nltk_data.git
mv nltk_data/packages ~/nltk_data

下面来配置虚拟环境:

python3 -m venv tts_venv
source tts_venv/bin/activate
pip3 install https://github.com/radxa-edge/TPU-Edge-AI/releases/download/v0.1.0/tpu_perf-1.2.31-py3-none-manylinux2014_aarch64.whl
pip3 install -r requirements.txt

全部运行完成后,启动示例:

bash run_gr.sh

接下来需要等待一段时间来加载模型,然后如果看到以下输出,说明启动顺利:
image.png

打开网页后,可以看到以下界面:
image.png

输入文字后,点击生成。就可以朗读。
这里经过实测,我发现右边的播放器有一点问题,点了播放按钮并没有任何反应。但这个问题不大,因为从终端中我们可以看到如下内容:image.png
这里清楚的显示了生成的文件保存在哪。我们可以直接打开这个文件,就能听到声音。

测试完成,接下来我们需要研究下代码,看看如何可以应用到我们的项目中。
run_gr.sh文件内,除了配置一下环境变量外,就是运行gr.py这个文件。打开文件后,可以看到里面有一个gradio服务器,我们使用的生成按钮调用了一个名叫tts_only的函数,这个函数仅有三个输入,需要转化的文字,朗读者和情绪。非常简单。这个函数的返回值是输出音频文件的相对路径。

image.png

在使用前,我们还需要知道speaker和emotion有哪些值可以用。其中可支持的speaker列表见./data/youdao/text/speaker2,可支持的任意文字,参考的emotion列表见./data/youdao/text/emotion。所有的变量都是字符串的格式。

那么接下来,我们只需要稍微改动一下gr.py,关闭gradio服务器,就可以把它作为一个库使用,方便外部调用。

先注释最后两行:

# demo.queue()  
# demo.launch(debug=True, show_api=True, share=False, server_name="0.0.0.0")

接着我们新建一个run.py文件,写入以下内容:

from gr import tts_only

res = tts_only("你好","8051","开心")
print(res)

运行以下,就可以看到我们直接调用了方法,并且生成好了对应的音频文件。
image.png

更多回帖

发帖
×
20
完善资料,
赚取积分