You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 06:24:30