没有可用的默认输出设备

问题描述 投票:0回答:1

我正在尝试在 google colab 上将波形转换为音频流,但遇到以下问题:

import pyaudio
pa = pyaudio.PyAudio()
pa.get_default_output_device_info()
# error
# OSError: No Default Output Device Available

我在 Google Colab 上的 pip3 install pyaudio 上看到他们需要使用一些 javascript 来启用麦克风,但我可以使用

IPython.display.Audio
来播放
.wav
文件,所以我不知道如何解决这个错误

python google-colaboratory
1个回答
0
投票

如果您在本地系统上执行代码,您就不会遇到这个问题。

Google Colab
无法直接访问您的麦克风,因此出现了问题。这是一个解决方法:

# Import packages
import base64 
import google.colab
import IPython.display 

# Define record in js
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(duration=3):
  print(f"{duration}s recording in progress")
  display(IPython.display.Javascript(record))
  duration += 1
  s = google.colab.output.eval_js('record(%d)' % (duration*1000))
  print("Audio recording complete")
  b = base64.b64decode(s.split(',')[1])
  return b

test = record()
© www.soinside.com 2019 - 2024. All rights reserved.