背景
在部分ubunut环境中,我们指定了麦克风的下标,使用指定的麦克风有问题,只能录音一次,第二次就失效了,不过只是部分ubunut系统会遇到这个情况
# 找到以usb_mic_prefix为前缀的麦克风下标
import speech_recognition as sr
def load_mic_index(usb_mic_prefix):for index, name in enumerate(sr.Microphone.list_microphone_names()):if usb_mic_prefix in name:return index# 用指定的麦克风作为source
self.source = sr.Microphone(sample_rate=16000,device_index={上面def获取的下标})def setup_mic(self):recorder = sr.Recognizer()recorder.energy_threshold = self.energy# 当声音消失self.pause 秒后调用listen_in_background函数中的回调函数recorder.pause_threshold = self.pauserecorder.dynamic_energy_threshold = self.dynamic_energyself.continuous_listening = recorder.listen_in_background(self.source,self.listen_callback if self.listen_callback is not None else self.record_callback)
解决办法
我们直接把我们想用的麦克风改成默认麦克风
pulseaudio -k && pulseaudio --start# 获取index
pactl list short sourcesvim /etc/pulse/default.pa add: set-default-source 1(上面获取到的index)
总结:
找不到为什么会异常,但是有新的解决方法.....凑合着用