【问题标题】: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 秒的音频,然后再停止听任何音频?

【问题讨论】:

  • 你解决了吗?
  • @NaveenKumar 不

标签: python django speech-recognition


【解决方案1】:

我认为你需要阅读library specifications;然后,您可以检查使用 record 方法而不是 listen 方法是否比您的应用程序更可取。

【讨论】:

    【解决方案2】:
    1. 如文档所述,当您退出 with 时,录制将停止。您可以在with 之后打印一些内容,以知道录制已停止。
    2. 这是 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
          
      

      【讨论】:

        猜你喜欢
        • 2014-04-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多