PyAudioを使ったPython録音処理
PythonからPyAudioを使ってUSBマイクなどの音声を録音できます。
本記事では、PythonのPyAudioライブラリを使用して、簡単に音声録音を行う方法を解説します。
インストール
Windows
pip install pyaudio
Ubuntu 20.04
portaudio.hでfile not foundのエラーが表示される場合は次のコマンドでインストールしてください。(Python 3.8.10 で確認)
sudo apt install python3-pyaudio
Windowsの録音処理
import pyaudio
import wave
REC_TIME = 10 # sec
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 44100
CHUNK = 2**12
audio = pyaudio.PyAudio()
stream = audio.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input=True,
frames_per_buffer=CHUNK)
print("recording now...")
# 録音処理
frames = []
for i in range(0, int((RATE / CHUNK) * REC_TIME)):
data = stream.read(CHUNK)
frames.append(data)
#;
# 録音終了
stream.stop_stream()
stream.close()
audio.terminate()
# 保存
wave_file = wave.open('output.wav', 'wb')
wave_file.setnchannels(CHANNELS)
wave_file.setsampwidth(audio.get_sample_size(FORMAT))
wave_file.setframerate(RATE)
wave_file.writeframes(b''.join(frames))
wave_file.close()
Ubuntuの録音処理
Windowsと同じで録音できる場合もあります。録音できない場合は、input_device_index
を指定します。値はarecord -l
コマンドで表示されたカード番号を指定します。
import pyaudio
import wave
REC_TIME = 10 # sec
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 44100
CHUNK = 2**12
DEVICE_INDEX = 2
audio = pyaudio.PyAudio()
stream = audio.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input=True,
input_device_index=DEVICE_INDEX,
frames_per_buffer=CHUNK)
print("recording now...")
# 録音処理
frames = []
for i in range(0, int((RATE / CHUNK) * REC_TIME)):
data = stream.read(CHUNK)
frames.append(data)
#;
# 録音終了
stream.stop_stream()
stream.close()
audio.terminate()
# 保存
wave_file = wave.open('output.wav', 'wb')
wave_file.setnchannels(CHANNELS)
wave_file.setsampwidth(audio.get_sample_size(FORMAT))
wave_file.setframerate(RATE)
wave_file.writeframes(b''.join(frames))
wave_file.close()