在树莓派5上本地部署端到端智能语音聊天项目

在树莓派5上本地部署端到端智能语音聊天项目

项目介绍

项目总体采用_STT模型+本地大语言模型+TTS模型_三步进行实现,为了能够实现在树莓派等算力资源有限的边缘端设备部署,并使项目延迟尽可能降低,只能选择轻量化的TTS模型与参数较少或者经过量化后的大语言模型进行实现。本项目中每一次问答的处理时间可以控制在十秒以内。

硬件及模型选择

在这里插入图片描述

硬件设备

Raspberry pi5(8GB内存),带声卡的扬声器,带麦克风的摄像头,显示屏(其实可以不需要)

模型选择

功能 模型名称
语音转文字 Paraformer-large
大语言模型 Qwen2.5-0.5B-Instruct
文字转音频(TTS) Piper-TTS

项目具体实现步骤

模型下载与环境搭建

语音转文本模型和大语言模型可以直接在魔搭社区找到并下载到本地一个名为chat的项目文件夹下

至于TTS模型,可以进入piper/VOICES.md at master · rhasspy/piper页面,下滑到最后找到
在这里插入图片描述

任意选择一个声音(这里我选择medium)下载model与config,一样保存到chat文件夹中

之后进行环境的搭建,新建一个虚拟环境,输入如下指令

pip install piper-tts modelscope transformers funasr torch torchvision torchaudio soundcard accelerate pynput wave\
pygame soundfile

可能会出现没安装全部环境的情况(因为我也不太记得了),后续根据终端输出进行剩余库的安装就可以了

后面运行程序的时候可能会出现一个关于datasets库的报错(具体报的啥我也不太记得了),原因是datasets库的版本不兼容,只需要卸载原来的datasets库安装2.16.0的datasets库就可以解决

pip uninstall datasets
pip install datasets==2.16.0

_Piper_调用函数的编写

由于原github项目中没有给出_Piper_模型在python中调用的示例代码,我在查看库函数后写了一个简单的_Piper_的调用函数,并封装成_Piper_tts.py_文件

# 保存为项目中的piper_tts.py文件
import wave
from piper import PiperVoice

# audio_path为生成语音的保存路径,text为生成语音的文本
def generate_audio(audio_path, text):
    # 初始化 Piper 实例
    pipers = PiperVoice.load('zh_CN-huayan-medium.onnx', 'zh_zh_CN_huayan_medium_zh_CN-huayan-medium.onnx.json')
 
    # 合成语音
    output_wav_path = audio_path
    with wave.open(output_wav_path, 'wb') as wav_file:
        wav_file.setnchannels(1)
        wav_file.setsampwidth(2)
        wav_file.setframerate(pipers.config.sample_rate)

        pipers.synthesize(text, wav_file=wav_file)

音频文件播放函数的编写

在保存TTS模型生成的音频文件后,我希望将它播放出来,从而形成语音问答的流程,因此借助pygame库进行音频文件播放函数的编写,并保存到项目文件下的_play_audio.py_文件

import pygame

def play_audio(audio_path):
    pygame.mixer.init()
    pygame.mixer.music.load(audio_path)
    pygame.mixer.music.play
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

病症大系挂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值