Pythonで音を録音して保存する方法
Pythonで音を録音〜保存する方法を紹介します。
今回使うライブラリは、pyaudioとwaveを使います。
waveに関しては、標準でインストールされているので、すぐ使えます。
pyaudioは、別にインストールする必要があるので、インストール方法も紹介します。
pyaudioのインストール
pyaudioをインストールしていきます。
私は、ライブラリ管理にAnacondaを使用しているので、Anacondaのインストール方法しか紹介しません。
手順は簡単です。
- Anaconda navigatorを起動する
- Environmentから、[installed]を[uninstalled]に変更する
- 検索ボックスで、「pyaudio」と検索する
- pyaudioを追加する
こんな感じの手順でインストールできます。
[pip install pyaudio]でもいけます。
pythonで録音する方法
先程インストールしたpyaudioを使います。
今回紹介するプログラムでは、時間(秒数)を指定して、その時間だけ録音するという機能です。
Pythonで音を録音して可視化するとraspberryPi と pyaudioで録音、音声波形処理を参考にしました。
上の2つにあるソースコードを実行しましたが、なぜか上手く動作しませんでした。
そこで、手直しを加えて、自分の環境で動くプログラムにしたので、公開します。
ソースコード
import pyaudio import wave chunk = 1024 FORMAT = pyaudio.paInt16 CHANNELS = 1 #サンプリングレート RATE = 44100 #録音時間を入力 RECORD_SECONDS = int(input()) p = pyaudio.PyAudio() stream = p.open( format = FORMAT, channels = CHANNELS, rate = RATE, input = True, frames_per_buffer = chunk ) all = [] for i in range(0, int(RATE / chunk * RECORD_SECONDS)): data = stream.read(chunk) all.append(data) stream.close() p.terminate() data = b''.join(all) #保存するファイル名、wは書き込みモード out = wave.open('sample.wav','w') out.setnchannels(1) out.setsampwidth(2) out.setframerate(RATE) out.writeframes(data) out.close()