我正在尝试在 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
文件,所以我不知道如何解决这个错误
如果您在本地系统上执行代码,您就不会遇到这个问题。
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()