Google Colab 上的“OSError:没有可用的默认输入设备”

Ali*_*hen 4 python pyaudio google-colaboratory

我根据angelokh的答案在Google Colab上使用“pip3 install pyaudio”安装了pyaudio 。

然后,我得到了这个错误,

OSError: No Default Input Device Available
Run Code Online (Sandbox Code Playgroud)

在谷歌 Colab 上。

代码如下所示。

import speech_recognition as sr
r = sr.Recognizer()
with sr.Microphone() as source:
    r.adjust_for_ambient_noise(source)
    audio = r.listen(source)
Run Code Online (Sandbox Code Playgroud)

Anw*_*vic 6

您无法像使用自己的机器一样直接使用 Google Colab 中的麦克风。您必须使用 JavaScript 让浏览器启用麦克风。这可以使用此处找到的以下代码来完成:

# all imports
from io import BytesIO
from base64 import b64decode
from google.colab import output
from IPython.display import Javascript

RECORD = """
const sleep  = time => new Promise(resolve => setTimeout(resolve, time))
const b2text = blob => new Promise(resolve => {
  const reader = new FileReader()
  reader.onloadend = e => resolve(e.srcElement.result)
  reader.readAsDataURL(blob)
})
var record = time => new Promise(async resolve => {
  stream = await navigator.mediaDevices.getUserMedia({ audio: true })
  recorder = new MediaRecorder(stream)
  chunks = []
  recorder.ondataavailable = e => chunks.push(e.data)
  recorder.start()
  await sleep(time)
  recorder.onstop = async ()=>{
    blob = new Blob(chunks)
    text = await b2text(blob)
    resolve(text)
  }
  recorder.stop()
})
"""

def record(sec=3):
  print("Speak Now...")
  display(Javascript(RECORD))
  sec += 1
  s = output.eval_js('record(%d)' % (sec*1000))
  print("Done Recording !")
  b = b64decode(s.split(',')[1])
  return b #byte stream
Run Code Online (Sandbox Code Playgroud)

现在您可以使用该record()功能来录制音频。该函数以字节流形式返回音频。您可以通过以下链接在 colab 上亲自尝试: