PCの出力音声を録音する

PCの出力音声を録音して、音声認識などに放り込めば、いろんな用途に使える。
pyaudioライブラリを使えば簡単に出来そうだったので、試作してみた。

入力ソースの選択
Windowsの場合:既定ではマイク入力となっているが、「ステレオミキサー」を有効にする必要がある。
LinuxやmacOSの場合:オーディオルーティングツールを設定することでシステム音声を録音。

ライブラリのインストール

>pip install pyaudio
でinstall。Pythonの細かい使い方は割愛(リクエストあれば解説)します。


import pyaudio
import wave

# 録音設定
FORMAT = pyaudio.paInt16  # 音声のフォーマット
CHANNELS = 2              # ステレオ
RATE = 44100              # サンプルレート (44.1 kHz)
CHUNK = 1024              # チャンクサイズ
RECORD_SECONDS = 10       # 録音時間 (秒)
OUTPUT_FILENAME = "output.wav"  # 出力ファイル名

# PyAudioインスタンスを作成
audio = pyaudio.PyAudio()

# 録音用ストリームを作成
stream = audio.open(format=FORMAT, channels=CHANNELS, rate=RATE,
                    input=True, frames_per_buffer=CHUNK)
print("録音中...")

frames = []

# 音声を録音
for _ in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
    data = stream.read(CHUNK)
    frames.append(data)

print("録音終了")

# ストリームを終了
stream.stop_stream()
stream.close()
audio.terminate()

# WAVファイルに保存
with wave.open(OUTPUT_FILENAME, 'wb') as wf:
    wf.setnchannels(CHANNELS)
    wf.setsampwidth(audio.get_sample_size(FORMAT))
    wf.setframerate(RATE)
    wf.writeframes(b''.join(frames))

print(f"録音した音声を {OUTPUT_FILENAME} に保存しました。")

以上のコードを入力して

> python record_audio.py
録音中...
録音終了
録音した音声を output.wav に保存しました。

録音された音量が小さいので改良しないと使えない