【问题标题】:How do i control when to stop the audio input?如何控制何时停止音频输入?
【发布时间】:2022-03-23 00:14:31
【问题描述】:
我正在使用 SpeechRecognition Python 包从用户那里获取音频。
import speech_recognition as sr
# obtain audio from the microphone
r = sr.Recognizer()
with sr.Microphone() as source:
print("Say something!")
audio = r.listen(source)
这段代码在执行时开始监听用户的音频输入。如果用户有一段时间不说话,它会自动停止。
- 我想知道如何才能知道它已停止收听音频?
- 如何手动禁用它?我的意思是,如果我想听 50 秒的音频,然后再停止听任何音频?
【问题讨论】:
标签:
python
django
speech-recognition
【解决方案2】:
- 如文档所述,当您退出
with 时,录制将停止。您可以在with 之后打印一些内容,以知道录制已停止。
- 这是 50 秒后停止录制的方法。
import speech_recognition as sr
recognizer = sr.Recognizer()
mic = sr.Microphone(device_index=1)
with mic as source:
recognizer.adjust_for_ambient_noise(source)
captured_audio = recognizer.record(source=mic, duration=50)
【解决方案3】:
迟到而不是直接回答,而是连续录制麦克风直到按下字母q,您可以使用:
import speech_recognition as sr
from time import sleep
import keyboard # pip install keyboard
go = 1
def quit():
global go
print("q pressed, exiting...")
go = 0
keyboard.on_press_key("q", lambda _:quit()) # press q to quit
r = sr.Recognizer()
mic = sr.Microphone()
print(sr.Microphone.list_microphone_names())
mic = sr.Microphone(device_index=1)
while go:
try:
sleep(0.01)
with mic as source:
audio = r.listen(source)
print(r.recognize_google(audio))
except:
pass