MeloTTS 生成 RKNN 模型

方案概述 🚀

本方案基于RK3588平台,通过RKNN(Rockchip Neural Network)工具链实现高效的语音生成功能。RK3588作为瑞芯微推出的高性能AIoT处理器,内置NPU(神经网络处理单元),配合RKNN工具链可高效完成端侧语音合成(TTS)任务。

MeloTTS.cpp 是meloTTS 的 C++ 实现,MeloTTS是由 MyShell.ai 发布的一个高质量、多语言的文本转语音 (Text To Speech) 库,支持英语、中文以及其他多种语言。本仓库基于OpenVINO,支持在 CPU、GPU 和 NPU 边缘设备上的部署。目前,本仓库支持中文(混合英文)和纯英语

RK3588平台部署 😈
环境准备:

  • RK3588开发板(推荐Rock5B或Firefly RK3588)
  • RKNN Toolkit2工具包(建议版本≥1.4.0)
  • 音频处理工具库(如librosa/pyaudio等)

部署流程:

  1. 将转换完成的RKNN模型传输至开发板
  2. 编写模型加载及推理代码
  3. 实现文本预处理和音频后处理功能

🎯 模型访问地址:MeloTTS-Chinese(点击直达Hugging Face页面)


生成 ONNX 模型 ⚡

shell 复制代码
# 使用支持 ONNX 导出的版本
git clone https://github.com/mmontol/MeloTTS.git

导出 ONNX 脚本 🔥

  • export_onnx.py

    python 复制代码
    # 修改 config_path/ckpt_path
    from melo.api import TTS
    import os
    os.environ["HF_ENDPOINT"] = "https://hf-mirror.com"
    
    # Speed is adjustable
    speed = 1.0
    device = 'cpu' # or cuda:0
    
    model = TTS(language='ZH', device=device, use_hf=False ,config_path = './MeloTTS-Chinese/config.json',
                ckpt_path='./MeloTTS-Chinese/checkpoint.pth')
    speaker_ids = model.hps.data.spk2id
    
    model.export_onnx(speaker_ids['ZH'])
  • Run

    shell 复制代码
    # 在当前目录下生成encoder-ZH_MIX_EN.onnx和decoder-ZH_MIX_EN.onnx文件
    python export_onnx.py

生成RKNN模型 👿

  • to_rknn.py , 不进行量化生成rknn模型

  • 分别生成 decoder/encoder rknn 模型

    shell 复制代码
    from rknn.api import RKNN
    
    ONNX_MODEL = './weights/decoder-ZH_MIX_EN.onnx'
    RKNN_MODEL = './weights/decoder-ZH_MIX_EN_rk3588.rknn'
    
    PLATFORM = "RK3588"
    QUANTIZE_ON = False
    
    if __name__ == '__main__':
    
        # Create RKNN object
        rknn = RKNN(verbose=False)
        # Pre-process config
        print('--> Config model')
        rknn.config(target_platform=PLATFORM)
        print('done')
    
        # Load model
        print('--> Loading model')
        ret = rknn.load_onnx(model=ONNX_MODEL)
        if ret != 0:
            print('Load model failed!')
            exit(ret)
        print('done')
    
        # Build model
        print('--> Building model')
        ret = rknn.build(do_quantization=QUANTIZE_ON)
        if ret != 0:
            print('Build model failed!')
            exit(ret)
        print('done')
    
        # Export rknn model
        print('--> Export rknn model')
        ret = rknn.export_rknn(RKNN_MODEL)
        if ret != 0:
            print('Export rknn model failed!')
            exit(ret)
        print('done')
    
        # Release
        rknn.release()
相关推荐
企鹅的蚂蚁2 天前
LubanCat RK3588 实时 Linux 开发(六):启用 gs_usb 驱动并完成 USB-CAN 收发
linux·rk3588·linux驱动·socketcan·gs_usb·usb-can
qwsaedca3 天前
在Mac上跑 Kokoro TTS经验总结
rust·mac·tts
柔情的菜刀4 天前
RK3588 DDR初始化bin修改
rk3588
刘广睿7 天前
AI 配音怎么做?语音合成 TTS 技术选型与本地部署实战(edge-tts / GPT-SoVITS / CosyVoice / Piper)
人工智能·音视频·效率工具·语音合成·tts
iwgh8 天前
OddTTS更新:集成MOSS-TTS-Nano 0.1B ONNX,纯CPU实时语音克隆与20种语言支持
语音合成·tts·oddtts·moss-tts-nano
零意@8 天前
RK3588 debian11的SDK代码新增一个分区怎么修改
rk3588·新增分区·分区大小·分区文件
iwgh11 天前
OddTTS更新:纯CPU支持11种语言的语音合成!
语音合成·tts·kokoro·oddtts·audio8
擎天柱工坊11 天前
干货 | RK3588硬件全开源设计笔记1-芯片PCB叠层阻抗设计
学习笔记·rk3588·pcb设计·芯片特性·叠层设计·阻抗设计
禅口魔心13 天前
RK3588硬件 Agent 代码详解
rk3588·嵌入式开发·硬件agent
禅口魔心13 天前
RK3588(Rock 5T)硬件 Agent 搭建实录:从环境到跑通第一个闭环
rk3588·嵌入式开发