(DeepSeek 版)基于现有的 Windows 台式机实现大模型语音交互设备
通过以上步骤,你可以直接在 Windows 台式机上实现一个完整的语音交互系统。如果需要更复杂的逻辑(如智能家居控制),只需在主循环中添加对应代码即可!检查 vosk_model_path 路径是否为解压后的模型目录(包含 am, conf 等子文件夹)。右键点击任务栏音量图标 → 声音设置 → 麦克风隐私权限 → 允许应用访问麦克风。解压到任意目录(例如 C:\vosk-model-cn)。若台
一、所需硬件清单(可选补充)
名称 |
说明 |
是否必需 |
USB麦克风 |
若台式机麦克风效果差可补充 |
可选 |
外接音箱 |
若台式机扬声器效果差可补充 |
可选 |
二、软件准备
1. 安装Python
-
访问 Python官网 下载最新版 Python 3.x,安装时勾选 “Add Python to PATH”。
2. 安装依赖库
在 命令提示符(CMD) 中执行以下命令:
pip install speechrecognition pyaudio vosk pyttsx3 gTTS
3. 下载Vosk中文模型
-
解压到任意目录(例如 C:\vosk-model-cn)。
三、代码实现
1. 语音识别(离线+在线混合模式)
创建文件 voice_assistant.py,输入以下代码:
import speech_recognition as sr
from vosk import Model, KaldiRecognizer
import json
import os
# 配置Vosk离线模型路径
vosk_model_path = r"C:\vosk-model-cn"
model = Model(vosk_model_path)
recognizer = KaldiRecognizer(model, 16000)
def listen_offline():
"""离线语音识别(Vosk)"""
r = sr.Recognizer()
with sr.Microphone() as source:
print("请说话...")
audio = r.listen(source)
# 将音频数据转换为Vosk需要的格式
raw_data = audio.get_raw_data(convert_rate=16000, convert_width=2)
if recognizer.AcceptWaveform(raw_data):
result = json.loads(recognizer.Result())
return result.get("text", "")
else:
return ""
def listen_online():
"""在线语音识别(Google API)"""
r = sr.Recognizer()
with sr.Microphone() as source:
print("请说话...")
audio = r.listen(source)
try:
return r.recognize_google(audio, language="zh-CN")
except:
return ""
2. 语音合成
import pyttsx3
from gtts import gTTS
import playsound
def speak(text, use_online=True):
"""语音合成(在线gTTS或离线pyttsx3)"""
if use_online:
# 在线合成(需联网)
tts = gTTS(text=text, lang='zh-cn')
tts.save("output.mp3")
playsound.playsound("output.mp3")
os.remove("output.mp3")
else:
# 离线合成
engine = pyttsx3.init()
engine.setProperty("rate", 150)
engine.say(text)
engine.runAndWait()
3. 主循环逻辑
if __name__ == "__main__":
print("语音助手已启动!")
while True:
# 使用离线识别(若失败则切换在线)
text = listen_offline()
if not text:
text = listen_online()
if text:
print("识别结果:", text)
# 简单问答逻辑
if "你好" in text:
response = "你好,我是DeepSeek助手!"
elif "时间" in text:
import datetime
now = datetime.datetime.now().strftime("%H点%M分")
response = f"现在时间是{now}"
else:
response = "我还在学习中,请说更简单的指令。"
# 语音输出(优先在线)
speak(response, use_online=True)
四、运行与调试
1. 测试麦克风
-
在代码中指定麦克风设备ID(若有多麦克风):
2. 运行程序
在CMD中执行:
python voice_assistant.py
五、扩展功能
1. 接入DeepSeek API
-
安装请求库:
-
在代码中添加:
2. 添加唤醒词
-
使用 pocketsphinx 实现离线唤醒词检测:
-
代码片段:
六、常见问题解决
-
PyAudio安装失败:
-
手动安装:下载 PyAudio Wheel(例如 PyAudio‑0.2.12‑cp310‑cp310‑win_amd64.whl),在CMD中执行:
-
-
麦克风无权限:
-
右键点击任务栏音量图标 → 声音设置 → 麦克风隐私权限 → 允许应用访问麦克风。
-
-
Vosk模型路径错误:
-
检查 vosk_model_path 路径是否为解压后的模型目录(包含 am, conf 等子文件夹)。
-
通过以上步骤,你可以直接在 Windows 台式机上实现一个完整的语音交互系统。如果需要更复杂的逻辑(如智能家居控制),只需在主循环中添加对应代码即可!
更多推荐
所有评论(0)