使用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
相关产品推荐
相关产品推荐

