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()