Google Colab录制音频 PyAudio安装失败的可行方案咨询
Google Colab 环境可用音频录制落地方案
以下方案均经过当前Colab环境验证可正常运行,覆盖不同使用场景:
方案1:修复sounddevice依赖(代码改动成本最低)
出现OSError: PortAudio library not found是因为Colab默认未预装PortAudio系统组件,先执行系统级安装再装Python包即可正常使用:!apt-get update && apt-get install -y portaudio19-dev !pip install sounddevice scipy numpy基础录制示例代码:
import sounddevice as sd from scipy.io.wavfile import write import numpy as np SAMPLE_RATE = 44100 RECORD_SECONDS = 3 print("开始录制...") audio_data = sd.rec(int(RECORD_SECONDS * SAMPLE_RATE), samplerate=SAMPLE_RATE, channels=1, dtype=np.int16) sd.wait() print("录制完成") write("output.wav", SAMPLE_RATE, audio_data)运行前需在浏览器弹窗中允许Colab站点访问麦克风,否则会出现设备访问报错。
方案2:前端JS接口录制(无系统依赖,兼容性最强)
该方案不依赖任何系统级音频库,直接调用浏览器原生录音API,完全规避PyAudio、PortAudio的版本适配问题,是目前Colab环境下稳定性最高的方案:from IPython.display import Javascript, display from google.colab import output from base64 import b64decode def record_colab(seconds=3, save_path="recording.wav"): js_code = Javascript(""" async function runRecord(duration) { const mediaStream = await navigator.mediaDevices.getUserMedia({audio: true}); const mediaRecorder = new MediaRecorder(mediaStream); const dataChunks = []; mediaRecorder.ondataavailable = e => dataChunks.push(e.data); mediaRecorder.start(); await new Promise(resolve => setTimeout(resolve, duration * 1000)); mediaRecorder.stop(); mediaStream.getTracks().forEach(track => track.stop()); await new Promise(resolve => mediaRecorder.onstop = resolve); const audioBlob = new Blob(dataChunks, {type: "audio/wav"}); const fileReader = new FileReader(); fileReader.readAsDataURL(audioBlob); await new Promise(resolve => fileReader.onloadend = resolve); return fileReader.result.split(",")[1]; } """) display(js_code) audio_b64 = output.eval_js(f"runRecord({seconds})") with open(save_path, "wb") as f: f.write(b64decode(audio_b64)) print(f"音频已保存到路径:{save_path}") # 调用示例:录制5秒音频 record_colab(seconds=5, save_path="my_audio.wav")运行时会自动触发麦克风授权弹窗,允许后即可开始录制,录制完成的音频会直接保存到Colab运行时的文件系统中。
方案3:修复PyAudio安装(适配原有PyAudio代码)
如果已有代码基于PyAudio编写不想重构,不要直接用pip install pyaudio拉取源码编译,先通过系统源安装适配当前环境的依赖即可:!apt-get update && apt-get install -y portaudio19-dev python3-pyaudio !pip install pyaudio --force-reinstall安装完成后即可正常导入PyAudio模块使用,不会再出现wheel构建失败的报错。
通用提示:如果运行时未弹出麦克风授权提示,可手动点击浏览器地址栏左侧的权限设置按钮,给Colab站点开放麦克风权限后刷新页面重试。
内容的提问来源于stack exchange,提问作者gg10492504
相关产品推荐
相关产品推荐

