Google Colab では、標準機能としてマイク入力を直接扱うことはできません。しかし、以下の方法でマイクを利用することが可能です。
方法 1: pydub と IPython.display を使う
Google Colab では IPython.display.Audio を使って音声を録音できます。ただし、ローカルPCで録音し、アップロードする必要があります。
from google.colab import output
from IPython.display import Javascript
import numpy as np
import io
import base64
import scipy.io.wavfile
録音用のJavaScriptコード
def record(sec=5):
display(Javascript(f"""
async function record(sec) {{
const stream = await navigator.mediaDevices.getUserMedia({{ audio: true }});
const mediaRecorder = new MediaRecorder(stream);
const audioChunks = [];
mediaRecorder.ondataavailable = event => {{
audioChunks.push(event.data);
}};
mediaRecorder.onstop = async () => {{
const audioBlob = new Blob(audioChunks);
const arrayBuffer = await audioBlob.arrayBuffer();
const base64String = btoa(String.fromCharCode(...new Uint8Array(arrayBuffer)));
google.colab.kernel.invokeFunction('notebook.record_callback', [base64String], {{}})
}};
mediaRecorder.start();
await new Promise(resolve => setTimeout(resolve, sec * 1000));
mediaRecorder.stop();
}}
record({sec});
"""))
audio_data = None
def record_callback(base64_string):
global audio_data
audio_data = base64.b64decode(base64_string)
output.register_callback('notebook.record_callback', record_callback)
録音を開始
record(5)
このスクリプトを実行すると、ブラウザのマイクを使用して音声を録音できます。録音データは audio_data 変数に保存されます。
方法 2: ipywebrtc を使う
Google Colab は ipywebrtc ライブラリを使って、マイク音声を録音できます。
!pip install ipywebrtc
from ipywebrtc import AudioRecorder, CameraStream
import IPython
stream = CameraStream(constraints={'audio': True, 'video': False})
recorder = AudioRecorder(stream)
recorder.record()
録音を開始してから数秒後に、以下のコマンドで録音を停止し、音声ファイルを取得できます。
recorder.stop()
audio = recorder.audio
IPython.display.display(audio)
方法 3: ローカルで録音し、Colab にアップロード
ローカルPCで音声を録音し、Colab にアップロードするのが一番確実な方法です。
-
PCのマイクで .wav や .mp3 を録音
-
Google Colab にアップロード
-
pydub や librosa で処理
from google.colab import files
uploaded = files.upload()
Google Colab でのマイク録音は制限が多いため、ローカルで録音した音声をアップロードするのが最も簡単で確実な方法です。