Jetson 开发系列:离线低延迟的语音解决方案

当前市场上有许多智能对话助手,包括ChatGPT、Bing AI Chat等。但无一例外的是,这些产品,都需要您连接互联网。

在边缘设备上部署类似模型,以实现无需联网、低延迟的智能对话助手,这一需求尚未得到充分满足。

最近,正在 Jetson 上探索相关应用,期待在离线和低延迟方面取得一些突破,欢迎感兴趣的朋友一起交流。

昨天把本地大模型部署好了,并实现了 GPU 加速推理:

接下来,妙不可言的部分来了。

语音识别-ASR和语音合成-TTS,也要在边缘设备上完成,一个完全懂你的小助手,应将你的个人隐私牢牢守护。

本次分享,就给大家盘点:几款亲测好用的,ASR和TTS离线部署方案。

1. 离线语音识别ASR

1.1 faster-whisper

Whisper 相信大家都不陌生,由 OpenAI 开发,已经更新到 v3。

faster-whisper 则是用 CTranslate2 重新实现 Whisper,加速比达到4倍,需要的内存更少。

项目地址:https://github.com/SYSTRAN/faster-whisper

为了实现 Jetson GPU 加速推理,首先尝试了 Jetson Containers 提供的镜像,不过构建失败。

参考:https://github.com/dusty-nv/jetson-containers/tree/master/packages/speech/faster-whisper

无奈之下,找到了 faster-whisper-server 这个项目,服务端提供 OpenAI 兼容的 API。

尽管 docker 镜像提供 GPU 支持,但在 Jetson 中用不了,只能选择 CPU 方式部署:

docker run -d -p 3003:8000 --volume whisper:/root/.cache/huggingface --restart unless-stopped --name whisper fedirz/faster-whisper-server:latest-cpu

然后,下载模型权重,并上传到 docker 容器中:

sudo apt-get install git-lfs
git clone https://hf-mirror.com/Systran/faster-whisper-small
docker cp faster-whisper-small/ whisper:/root/.cache/huggingface/

git clone https://hf-mirror.com/Systran/faster-whisper-tiny
docker cp faster-whisper-tiny/ whisper:/root/.cache/huggingface/

倒是可以跑起来,但 small 模型推理太慢,而 tiny 模型,中文识别又太拉跨,最终只能放弃。

1.2 VOSK

项目文档:https://alphacephei.com/vosk/index.zh

支持 pip 一键安装:

pip install vosk

也可以选择服务端部署:https://alphacephei.com/vosk/server

docker run -d -p 2700:2700 --name vosk alphacep/kaldi-cn:latest

模型列表:https://alphacephei.com/vosk/models

其中支持中文的模型如下:

小模型大概需要 300M 内存,而大模型最多需要 16G 内存。测试了小模型,给大家看下效果:

如果 是 关于 生活 或者 娱乐 方面 请 随时 高质 我 会 经历 提供 上官 的 建议 和 信息

没法用啊!

1.3 sherpa-onnx

项目地址:https://github.com/k2-fsa/sherpa-onnx

Sherpa 是一个使用 PyTorch 的开源语音推理框架,专注于端到端模型,包括 Transducer 和 CTC。

而 Sherpa-onnx 的推理后端则是基于 ONNX。

ONNX 可是个大宝贝,它为 PyTorch、TensorFlow、Paddle 等各种深度学习框架下训练的模型提供了统一入口。

Sherpa-onnx 提供了 GPU 支持,但只支持Linux/Windows x64。

Jetson 是 Armv8,显然用不了。

怎么安装使用?

# 推荐 pip 一键安装
pip install sherpa-onnx

然后,前往https://github.com/k2-fsa/sherpa-onnx/releases/tag/asr-models下载模型。

官方上线了最新的 sensevoice 模型,中文识别效果非常棒,推理速度也 OK,推荐使用:

curl -SL -O https://github.com/k2-fsa/sherpa-onnx/releases/download/asr-models/sherpa-onnx-sense-voice-zh-en-ja-ko-yue-2024-07-17.tar.bz2

拿到模型后,在项目目录sherpa-onnx/python-api-examples/中提供了示例代码。

这里可以封装成类,方便调用:

class LocalSpeech:
    def __init__(self, device_index=0):
        model_dir = "/home/jetson/projects/voiceapi/models/sherpa-onnx-sense-voice-zh-en-ja-ko-yue-2024-07-17"
        self.recognizer = sherpa_onnx.OfflineRecognizer.from_sense_voice(
            model=f'{model_dir}/model.int8.onnx',
            tokens=f'{model_dir}/tokens.txt',
            use_itn=True)
    
    def asr_sensevoice(self, filename='data/audios/tts.wav'):
        audio, sample_rate = read_wave(filename)
        stream = self.recognizer.create_stream()
        stream.accept_waveform(sample_rate, audio)
        self.recognizer.decode_stream(stream)
        return stream.result.text.strip()

我这里测试了推理耗时,供大家参考:

其中,线上版是在服务端部署的 sensevoice 模型,GPU 推理;本地sensevoice 就是上述代码中用的本地 onnx 模型,CPU 推理。

因为正常语音对话的音频时长不超过 5s,因此本地推理的耗时,完全可以接受。

2. 离线语音合成TTS

2.1 Piper

项目地址:https://github.com/rhasspy/piper

Piper 是一个快速、本地的文本转语音系统,专为树莓派4优化。已广泛用于各种需要语音合成的项目中。

听起来就很棒!

而且,安装使用也非常方便:

pip install piper-tts

或者从项目主页直接下载对应架构下已经编译好的安装包,解压即用:

然后,从https://github.com/rhasspy/piper/blob/master/VOICES.md找到对应的音色,每个音色包括 .onnx 和 .onnx.json 两个文件。

遗憾的是中文音色只有两个:

测试了看看吧:

echo '你好,你是哪位啊' | ./piper --model zh_CN-huayan-medium.onnx --output_file 1.wav

2.2 sherpa-onnx

sherpa-onnx 也提供了 TTS 方案。

https://github.com/k2-fsa/sherpa-onnx/releases/tag/tts-models提供了所有模型列表。

不过这些模型的推理延迟差异很大,其中 vits-icefall-zh-aishell3 最快。

我这里也测试了不同方案的推理耗时,供大家参考:

其中,edge-tts 是线上方案。
不过,piper 和 sherpa-onnx 的音质远不如 edge-tts,尤其是表现在机械、没有情感。

其实,有情感的 TTS,在 chattts 和 cosyvoice 等开源方案中都已实现,只是无法在 jetson 上部署,因为二者还不支持 arm 架构。

3. 流式 ASR + TTS

参考:https://github.com/ruzhila/voiceapi

voiceapi 基于 sherpa-onnx,提供了一个简单的语音识别/合成API,支持流式数据。

写在最后

本文为离线低延迟的语音解决方案,提供了几种思路。

其中,有情感的 TTS 本地部署,还有待进一步探索,欢迎感兴趣的朋友一起交流。

如果对你有帮助,欢迎点赞收藏备用。


为方便大家交流,新建了一个 AI 交流群,欢迎对AIoTAI工具AI自媒体等感兴趣的小伙伴加入。

最近打造的微信机器人小爱(AI)也在群里,公众号后台「联系我」,拉你进群。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值