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

如何在Google Colab中高质量录制音乐曲目

在Colab中录制高质量音乐音频的解决方案

问题分析

你当前使用的Colab麦克风录制代码,默认MediaRecorder配置是针对语音优化的低质量设置,导致录制的音乐音频无法满足流派分类等后续处理需求。而sounddevice、pyAudio这类依赖本地硬件直接控制的库,确实无法在Colab的云端环境中运行。

优化后的录制代码

核心是修改getUserMedia的音频参数,指定MediaRecorder的高质量编码格式,确保录制的音频保留足够的细节:

import IPython.display as ipd
from IPython.display import Javascript
from google.colab import output
from base64 import b64decode

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 => {
  // 配置高质量音频参数:44.1kHz标准采样率、立体声,关闭语音优化功能
  const stream = await navigator.mediaDevices.getUserMedia({
    audio: {
      sampleRate: 44100,
      channelCount: 2,
      echoCancellation: false,
      noiseSuppression: false,
      autoGainControl: false
    }
  })
  // 指定高质量编码格式,优先无压缩WAV,不支持则回退高比特率OPUS
  const options = { mimeType: 'audio/wav; codecs=1' }
  if (!MediaRecorder.isTypeSupported(options.mimeType)) {
    console.warn(`${options.mimeType} not supported, falling back to audio/opus`)
    options.mimeType = 'audio/opus; codecs=opus'
  }
  const recorder = new MediaRecorder(stream, options)
  const chunks = []
  recorder.ondataavailable = e => chunks.push(e.data)
  recorder.start()
  await sleep(time)
  recorder.onstop = async ()=>{
    const blob = new Blob(chunks, { type: options.mimeType })
    const text = await b2text(blob)
    resolve(text)
  }
  recorder.stop()
})
"""

def record_high_quality_audio(sec=5):
  display(Javascript(RECORD))
  s = output.eval_js('record(%d)' % (sec*1000))
  b = b64decode(s.split(',')[1])
  # 根据编码格式自动匹配文件名后缀
  mime_type = s.split(';')[0].split(':')[1]
  filename = 'high_quality_audio.wav' if mime_type == 'audio/wav' else 'high_quality_audio.opus'
  with open(filename, 'wb') as f:
    f.write(b)
  print(f"已保存高质量音频文件:{filename}")
  return filename

# 示例:录制10秒音乐
audio_file = record_high_quality_audio(sec=10)
# 播放录制的音频
ipd.display(ipd.Audio(audio_file))

关键优化点

  • 关闭语音优化功能:禁用回声消除、降噪、自动增益控制,这些功能会破坏音乐的动态范围和原始音色
  • 配置专业音频参数:采用44.1kHz音乐标准采样率+立体声通道,最大化保留音频细节
  • 指定高质量编码:优先使用无压缩WAV格式,若浏览器不支持则回退到高比特率OPUS编码,避免默认的低质量语音编码

后续处理注意事项

如果保存的是OPUS格式文件,可通过librosa转换为通用WAV格式用于后续处理:

import librosa
import soundfile as sf

# 读取OPUS文件并转换为WAV
y, sr = librosa.load('high_quality_audio.opus', sr=44100)
sf.write('converted_audio.wav', y, sr)

内容的提问来源于stack exchange,提问作者user1993416

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 14:10:26