目标,在播放声音的时候,禁用掉麦克风
新建立一个文件夹,然后拖入vscode中
然后创建虚拟环境,vscode会自动帮我们创建虚拟环境,手动激活虚拟环境
source venv/bin/activate
import speech_recognition as sr
import pyaudio
recognizer = sr.Recognizer()
while True:
# 使用麦克风获取声音输入
try:
with sr.Microphone() as source:
print("请说话...")
audio = recognizer.listen(source, timeout=10)
except sr.WaitTimeoutError:
print("未检测到语音输入,跳过...")
continue
try:
text = recognizer.recognize_google(audio)
print("你说的是: " + text)
except sr.UnknownValueError:
print("无法识别语音")
except sr.RequestError as e:
print("请求出错; {0}".format(e))
# 使用 PyAudio 播放录制的音频
p = pyaudio.PyAudio()
stream = p.open(format=p.get_format_from_width(audio.sample_width),
channels=1, # 单声道
rate=audio.sample_rate,
output=True)
stream.start_stream()
stream.write(audio.frame_data)
stream.stop_stream()
stream.close()
p.terminate()
上面的代码,扬声器在播放的时候,麦克风压根就没有工作,所以不存在扬声器说的时候,麦克风会采集到声音。
那为什么项目中的会遇到这个问题,是因为项目中的麦克风是一直采集数据
当我们说hello,hello , good morning , ||||| what is your name ?
这个会被识别成两段,因为中间停顿超过了0.2秒,第一段在做这种处理的时候,第二段仍然会被麦克风采集到,然后加入延时队列,所以说,麦克风是一直都在工作。
那是什么让麦克风可以一直录入音频呢?
原来是库自带的功能
这是后台开启,如何关闭呢?在此调用这个listen_in_background方法即可