Qwen3-1.7B智能语音助手:完整部署流程与代码实战
Qwen3-1.7B智能语音助手:完整部署流程与代码实战
1. 快速了解Qwen3-1.7B语音助手
Qwen3-1.7B是阿里巴巴开源的通义千问系列中的轻量级大语言模型,特别适合构建实时语音交互应用。这个1.7B参数的模型在保持高效推理速度的同时,具备出色的语义理解和对话生成能力。
通过本教程,你将学会:
- 如何在CSDN GPU环境中一键部署Qwen3-1.7B
- 使用LangChain框架调用本地模型API
- 构建完整的语音识别→文本生成→语音合成流程
- 实现一个能听会说的智能语音助手
2. 环境准备与模型部署
2.1 启动CSDN GPU镜像
- 登录CSDN星图镜像广场
- 搜索"Qwen3"并选择包含1.7B模型的GPU镜像
- 点击"一键部署"等待服务启动
- 通过Web IDE访问Jupyter Notebook环境
2.2 验证模型服务状态
在Jupyter中新建终端,执行以下命令检查服务:
ps aux | grep llama-server netstat -tulnp | grep 8000正常情况应看到模型服务运行在8000端口。如果没有自动启动,可以手动运行:
python -m llama_server --model Qwen3-1.7B --port 80003. 基础模型调用方法
3.1 使用LangChain调用模型
LangChain提供了统一接口调用不同的大模型。虽然Qwen3不是OpenAI模型,但它的API格式兼容OpenAI,我们可以直接使用:
from langchain_openai import ChatOpenAI chat_model = ChatOpenAI( model="Qwen3-1.7B", temperature=0.5, # 控制回答随机性 base_url="http://localhost:8000/v1", # 本地服务地址 api_key="EMPTY", # 本地测试无需真实API Key streaming=True, # 启用流式输出 ) response = chat_model.invoke("你好,介绍一下你自己") print(response.content)3.2 流式对话实现
对于语音助手场景,流式响应能显著提升用户体验:
async def stream_chat(prompt): async for chunk in chat_model.astream([("human", prompt)]): token = chunk.content if token: print(token, end="", flush=True) # 这里可以将token实时发送给TTS模块 # 示例调用 await stream_chat("今天的天气怎么样?")4. 语音识别模块集成
4.1 安装Whisper语音识别
Whisper是当前最优秀的开源语音识别模型之一:
pip install openai-whisper pip install pyaudio # 用于录音4.2 实现语音转文本
import whisper import pyaudio import wave def record_audio(filename, duration=5): p = pyaudio.PyAudio() stream = p.open(format=pyaudio.paInt16, channels=1, rate=16000, input=True, frames_per_buffer=1024) frames = [] for _ in range(0, int(16000 / 1024 * duration)): data = stream.read(1024) frames.append(data) stream.stop_stream() stream.close() p.terminate() with wave.open(filename, 'wb') as wf: wf.setnchannels(1) wf.setsampwidth(p.get_sample_size(pyaudio.paInt16)) wf.setframerate(16000) wf.writeframes(b''.join(frames)) # 加载Whisper模型 model = whisper.load_model("base") def speech_to_text(audio_file): result = model.transcribe(audio_file, language="zh") return result["text"].strip()5. 语音合成模块实现
5.1 安装VITS语音合成
VITS能生成非常自然的语音:
git clone https://github.com/jaywalnut310/vits.git cd vits pip install -r requirements.txt下载中文预训练模型并放入pretrained_models目录。
5.2 文本转语音实现
import torch from models import SynthesizerTrn import utils from text import text_to_sequence # 初始化模型 hps = utils.get_hparams_from_file("./configs/base.json") net_g = SynthesizerTrn( len(hps.symbols), hps.data.filter_length // 2 + 1, hps.train.segment_size // hps.data.hop_length, n_speakers=hps.data.n_speakers, **hps.model ).cuda() _ = net_g.eval() _ = utils.load_checkpoint("pretrained_models/chinese_vits.pth", net_g, None) def text_to_speech(text, output_file): stn_tst = torch.LongTensor(text_to_sequence(text, hps.data.text_cleaners)) with torch.no_grad(): x_tst = stn_tst.cuda().unsqueeze(0) x_tst_lengths = torch.LongTensor([stn_tst.size(0)]).cuda() audio = net_g.infer(x_tst, x_tst_lengths, noise_scale=0.667, length_scale=1.0, noise_scale_w=0.8)[0][0,0].data.cpu().float().numpy() import soundfile as sf sf.write(output_file, audio, hps.data.sampling_rate)6. 完整语音助手实现
6.1 主程序逻辑
import asyncio class VoiceAssistant: def __init__(self): self.llm = ChatOpenAI( model="Qwen3-1.7B", temperature=0.5, base_url="http://localhost:8000/v1", api_key="EMPTY", streaming=True, ) self.asr_model = whisper.load_model("base") async def run(self): while True: print("\n请说话(5秒)...") record_audio("input.wav", duration=5) # 语音转文本 text = self.asr_model.transcribe("input.wav", language="zh")["text"] print(f"你说: {text}") if text.lower() in ["退出", "结束"]: break # 流式生成回复 print("AI回复: ", end="") full_response = "" async for chunk in self.llm.astream([("human", text)]): token = chunk.content if token: print(token, end="", flush=True) full_response += token # 文本转语音 text_to_speech(full_response, "output.wav") # 播放语音(需要安装pydub) from pydub import AudioSegment from pydub.playback import play sound = AudioSegment.from_wav("output.wav") play(sound) # 启动助手 assistant = VoiceAssistant() asyncio.run(assistant.run())6.2 优化建议
延迟优化:
- 使用Whisper tiny模型加速ASR
- 对Qwen3-1.7B进行量化(如GGUF格式)
- 流式TTS,不必等待完整文本
效果提升:
- 添加语音端点检测(VAD)自动结束录音
- 实现多轮对话记忆
- 加入RAG增强知识准确性
部署优化:
- 封装为REST API服务
- 添加WebSocket实时通信
- 开发简单的前端界面
7. 总结与下一步
7.1 核心成果
通过本教程,我们成功实现了:
- Qwen3-1.7B模型的本地部署与调用
- 完整的语音识别→文本生成→语音合成流程
- 一个能听会说的智能语音助手原型
7.2 扩展学习
模型优化:
- 尝试Qwen3系列其他模型
- 学习模型量化与加速技术
功能扩展:
- 添加多语言支持
- 实现语音唤醒功能
- 集成知识库增强回答准确性
应用开发:
- 开发手机APP版本
- 构建智能家居控制中心
- 创建教育辅导助手
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。
