
随着边缘计算与AIoT的融合,端侧语音交互正成为许多智能设备的核心竞争力。RK3572核心板凭借内置的自研NPU结合VITS端到端语音合成模型,为众多开发者带来了流畅的本地化TTS(文本转语音)体验。今天我们来跑一遍例程吧。
一、RK3572 NPU介绍
RK3572核心板搭载2核Cortex-A73与6核Cortex-A53,内置自研NPU提供最高4TOPS算力,支持INT4/INT8/INT16/FP16等多种混合精度运算。其配套的RKN3工具链可实现模型转换、量化与高效部署,大幅降低开发门槛。

二、VITS模型介绍****
VITS 是一款端到端的语音合成模型,语音合成(Text-to-Speech, TTS)作为人工智能与信号处理交叉领域的核心技术,旨在将输入的自然语言文本转换为流畅、自然且富有表现力的语音波形,实现从文字到听觉信号的高质量映射。该模型支持端到端合成,兼容单说话人(LJSpeech)与多说话人(VCTK)模式,并采用滑动窗口推理机制。在保证高内存效率的同时,具备优异的实时性能(RTF < 0.2),可实现高质量的语音合成效果。在人机交互与智能语音应用中,TTS 在智能客服、无障碍辅助、车载语音交互、有声内容生成及边缘端语音播报等场景中发挥着不可替代的桥梁作用。

三、例程测试
3.1模型下载
模型在光盘资料中的位置:Core-RK3572 核心板光盘资料\4-软件资料\3-RK3572模型案例源码 \2-源码资料 \rk3572_Cdemo \rk3572_Cdemo.tar.gz。下载好模型。
3.2模型推送
进入应用目录中,使用adb命令将VITS模型推送到RK3572开发板中,确保adb正常连接。
code-snippet__js
<span style="color:rgba(0, 0, 0, 0.9)"><span style="background-color:#ffffff"><code>talowe<span style="color:#0e9ce5">@ubuntu22</span><span style="color:#dd1144">:~</span><span style="color:#0e9ce5">$ </span>adb push rknn3_vits/ <span style="color:#ca7d37">/</span></code></span></span>

3.3模型确认
模型包含两个阶段的RKNN 模型及对应权重文件,分别用于文本编码/时长预测(Step1)和声学解码(Step2)。支持LJSpeech(单说话人)和 VCTK(多说话人)两种预训练模型。
模型推送到开发板后,需确认文件存在:
LTS模式:vits_ljs_step1_slid_i8.rknn、vits_ljs_step1_slid_i8.weigh、vits_ljs_step2_slid_i8.rknn、vits_ljs_step2_slid_i8.weight
VCTK模式:vits_vctk_step1_slid_i8.rknn、vits_vctk_step1_slid_i8.weight、vits_vctk_step2_slid_i8.rknn、vits_vctk_step2_slid_i8.weight
注意:若使用VCTK,则需指定 --speaker_id 参数,用于指定转语音的说话人模式(0~108),LJSpeech 则忽略该参数。
3.4模型运行
进入应用所在目录,执行以下命令:
LJSpeech 示例(单说话人)
code-snippet__js
<span style="color:rgba(0, 0, 0, 0.9)"><span style="background-color:#ffffff"><code>root<span style="color:#0e9ce5">@rk3572</span>-buildroot:/# ./rknn_vits_demo \</code><code><span style="color:#afafaf"><em>--step1_model ./model/vits_ljs_step1_slid_i8.rknn \</em></span></code><code><span style="color:#afafaf"><em>--step1_weight ./model/vits_ljs_step1_slid_i8.weight \</em></span></code><code><span style="color:#afafaf"><em>--step2_model ./model/vits_ljs_step2_slid_i8.rknn \</em></span></code><code><span style="color:#afafaf"><em>--step2_weight ./model/vits_ljs_step2_slid_i8.weight \</em></span></code><code><span style="color:#afafaf"><em>--text "VITS is awesome! This is a text-to-speech system."</em></span></code></span></span>

运行成功后会生成文件:output_audio_ljs_rknn.wav,可通过以下指令播放文件内容
code-snippet__js
<span style="color:rgba(0, 0, 0, 0.9)"><span style="background-color:#ffffff"><code><span style="color:#0e9ce5">root</span>@rk3572-buildroot:/# gst-play-<span style="color:#0e9ce5">1</span>.<span style="color:#0e9ce5">0</span> output_audio_ljs_rknn.wav</code></span></span>
VCTK 示例(多说话人,指定 speaker_id=8)
code-snippet__js
<span style="color:rgba(0, 0, 0, 0.9)"><span style="background-color:#ffffff"><code>root<span style="color:#0e9ce5">@rk3572</span>-buildroot:/#</code><code> ./rknn_vits_demo \</code><code><span style="color:#afafaf"><em>--speaker_id 8 \</em></span></code><code><span style="color:#afafaf"><em>--step1_model ./model/vits_vctk_step1_slid_i8.rknn \</em></span></code><code><span style="color:#afafaf"><em>--step1_weight ./model/vits_vctk_step1_slid_i8.weight \</em></span></code><code><span style="color:#afafaf"><em>--step2_model ./model/vits_vctk_step2_slid_i8.rknn \</em></span></code><code><span style="color:#afafaf"><em>--step2_weight ./model/vits_vctk_step2_slid_i8.weight \</em></span></code><code><span style="color:#afafaf"><em>--text "VITS is awesome! This is a text-to-speech system."</em></span></code></span></span>

运行成功后会生成文件:output_audio_vctk_rknn.wav,可通过指令播放文件内容
code-snippet__js
<span style="color:rgba(0, 0, 0, 0.9)"><span style="background-color:#ffffff"><code><span style="color:#0e9ce5">root</span>@rk3572-buildroot:/# gst-play-<span style="color:#0e9ce5">1</span>.<span style="color:#0e9ce5">0</span> output_audio_vctk_rknn.wav</code></span></span>
四、结语
本章展示了RK3572 NPU与VITS模型的有效结合,兼顾了语音合成的高质量与低延迟。相信无论您的需求是智能客服、车载交互,还是边缘端语音播报方面的开发,这个例程都能给您一个小小的参考作用。如有资料需求或项目咨询,欢迎联系!眺望电子助力您的产品快速落地。
下期预告:
下一篇我们将继续讲解RK3572-LLM大语言模型部署的具体操作,敬请期待!