返回顶部
热门问答 更多热门问答
技术文章 更多技术文章

llm funasr tts,diy大模型语音助手,一个自己控制的siri,保姆教程

[复制链接]
链载Ai 显示全部楼层 发表于 前天 10:39 |阅读模式 打印 上一主题 下一主题

突发奇想,想结合目前的一些所学知识搞一个项目出来,于是乎结合目前的语言大模型搞了一个语音助手,哈哈,好玩多于实用,可以根据你的语音输入回复你的问题,并且自动语音播报出来,本着开源激发更多想法的原则,开源本项目的代码,文末可以获取。


下面介绍一下整个项目,便于大家理解

先来看看项目演示吧

哈哈不错吧


项目技术总揽

本项目的三大核心技术是:语音转文本,语言大模型根据问题产生答案,文本合成语音。三大技术用的都是开源项目,方便多少复现使用.语音转文字是用的funasr阿里开源的;大模型使用基于ollama的qwen2:7b,当然你也可以选择其他的比如gemma2,glm4等;文本合成语音有很多可选方案,比如chattts,fishspeeh,edge-tts,本次基于时间和效果的考虑,选择了edgetts,速度快,效果好,声音可选


技术代码简介


1、语音转文本funasr

model=AutoModel(model="paraformer-zh",vad_model="fsmn-vad",punc_model="ct-punc")defget_spk_txt(file):res=model.generate(input=file,batch_size_s=300,hotword='魔搭')returnres[0]["text"]

‍这里使用paraformer-zh 模型,第一使用会下载模型,可能会慢一点,这个函数可以直接将语音文件转成文本,当然还有许多其他模型大家可以去官网看看


2、大模型调用

defget_resp(input):prompt="用相对简练的句子回答我的问题,最好不要超过80字:我的问题是{0}".format(input)resp=llm.invoke(prompt)returnresp

大模型这里使用ollama作为大模型的支持,方便快捷,目前很多模型支持ollama部署,大家可以去ollama官网去看;这里我设置了prompt,主要是为了让生成快一点,大家可以自行修改


3、文本合成语音

asyncdefget_voice(text):"""Mainfunction"""VOICE="zh-CN-XiaoxiaoNeural"output_file="response"+str(time.time())+".mp3"communicate=edge_tts.Communicate(text,VOICE)awaitcommunicate.save(output_file)returnoutput_file

这里使用的 edge-tts 项目,这个新项目可以直接 pip安装使用,包含很多声音,你可以去 官网看看

或者执行下边命令获取 VOICE

edge-tts --list-voicesName: Microsoft Server Speech Text to Speech Voice (af-ZA, AdriNeural)ShortName: af-ZA-AdriNeuralGender: FemaleLocale: af-ZA
Name: Microsoft Server Speech Text to Speech Voice (am-ET, MekdesNeural)ShortName: am-ET-MekdesNeuralGender: FemaleLocale: am-ET
Name: Microsoft Server Speech Text to Speech Voice (ar-EG, SalmaNeural)ShortName: ar-EG-SalmaNeuralGender: FemaleLocale: ar-EG
Name: Microsoft Server Speech Text to Speech Voice (ar-SA, ZariyahNeural)ShortName: ar-SA-ZariyahNeuralGender: FemaleLocale: ar-SA

选择你喜欢的声音,替换VOICE = "zh-CN-XiaoxiaoNeural" 即可


使用注意点

启动项目后,可以把生成的公网链接发到手机,手机浏览器打开,提示使用麦克风,点击【允许】


点击【录音】,说出你的问题,点击【停止】,注意点击停止后,不要立即点击【submit】,等2s,你的录音转成了 文件后,再点击 【submit】,因为 录音完成到转成文件 需要时间,你也可以先试听一下你的问题


结果返回可能需要等待几秒,后台要进行 语音转文本、文本调用llm,结果合成语音,结果返回后,会直接播放,完美


整体其实不是很难,主要是一个思考过程


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

链载AI是专业的生成式人工智能教程平台。提供Stable Diffusion、Midjourney AI绘画教程,Suno AI音乐生成指南,以及Runway、Pika等AI视频制作与动画生成实战案例。从提示词编写到参数调整,手把手助您从入门到精通。
  • 官方手机版

  • 微信公众号

  • 商务合作

  • Powered by Discuz! X3.5 | Copyright © 2025-2025. | 链载Ai
  • 桂ICP备2024021734号 | 营业执照 | |广西笔趣文化传媒有限公司|| QQ