You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Vosk+pyaudiowpatch实现系统音频转文本遇乱码问题求助

离线系统音频转写故障:Vosk+pyaudiowpatch仅返回乱码

我正在开发一个离线项目,需求是捕获系统音频(如耳机等设备的输出)并通过语言模型转写为文本。选用Vosk作为离线语音识别模型,pyaudiowpatch实现回环音频输入。模型在麦克风输入时可正常工作,但切换为系统音频输入后,仅返回无意义的随机字符。我尝试过更换音频设备、调用Windows混音器等操作,问题仍未解决。

当前使用代码如下:

from vosk import Model, KaldiRecognizer
import pyaudiowpatch

# AI模型下载自Vosk官方模型库
# 德语模型:vosk-model-de-0.21
# 英语模型:vosk-model-en-us-0.22

model = Model(r"C:\Users\Q620763\Desktop\stt\lan_models\vosk-model-de-0.21")
#model_1 = Model(r"C:\ Users\Q620763\Desktop\stt\lan_models\vosk-model-en-us-0.22")

recognizer = KaldiRecognizer(model, 48000)

#mic = pyaudio.PyAudio()
audio = pyaudiowpatch.PyAudio()
    
wasapi_info = audio.get_host_api_info_by_type(pyaudiowpatch.paWASAPI)
default_speakers = audio.get_device_info_by_index(wasapi_info["defaultOutputDevice"])
print(default_speakers)

RATE = 48000
#mic_stream = mic.open(format=pyaudio.paInt16, channels=1, rate =16000, input=True, frames_per_buffer=8192)
#mic_stream.start_stream()

audio_stream = audio.open(format=pyaudiowpatch.paInt32,
                          channels=default_speakers['maxOutputChannels'],
                          rate=RATE,
                          input=True,
                          input_device_index=17,
                          frames_per_buffer= 8192)

audio_stream.start_stream()

print("Start tracking")
while True:

    data = audio_stream.read(4096, exception_on_overflow = False)
    if recognizer.AcceptWaveform(data):
        text = recognizer.Result()
        
        print(text[14:-3])

当前使用德语模型,若需测试英语模型可替换为:

model_1 = Model(r"{YOUR PATH}\vosk-model-en-us-0.22")

内容的提问来源于stack exchange,提问作者morigan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 18:42:59