プログラム解説
では解説していきます。
まず、マイク音声の入力については、以下の3関数で行っています。
- audiostart Audioのインスタンスを取得
- audiostop Audioインスタンスの解放
- read_plot_data データの読みだし
この3関数については、前回の記事で記載していますのでそちらを確認ください。
Wave保存
Wave音声の保存については以下の通りです。
まず、使用するライブラリは「wave」です。そのままですね。
使用するために以下の通り記載してインポートしてください。
import wave
そして保存処理は以下です。
この関数 引数として保存先のファイルパスを渡すようにしています。
def rec_exec(file_path): # 録音データをファイルに保存 wave_f = wave.open(file_path, 'wb') <- ファイルをオープン wave_f.setnchannels(1) <- チャネルを指定 wave_f.setsampwidth(2) <- サンプル幅を指定(16bitなので2Byteです) wave_f.setframerate(44100 ) <- フレームレートを指定 wave_f.writeframes(b''.join(rec_data)) <- データの書き込み wave_f.close() <- ファイルのクローズ
20211121追記
上記の、フレームレートやサンプル幅っていうのが分からないって方は、↓でデジタルオーディオについて纏めてみましたので参考にしてください。
保存しているrec_dataについては、以下の処理でデータの作成をしています。
rec_data = [] <- 空のリストを生成 print("Start") # 音声を読み出し while True: try: data = read_plot_data(stream) rec_data.append(data) <- 読み出ししたデータをしていく except KeyboardInterrupt: print("stop") break
まとめ
これでマイクの音声をファイルに保存することができました。
これで、音声を色々とチェックしたり、加工するための準備ができました。
次回は、いよいよフーリエ変換を用いて、周波数測定をしてみようと思います。
Pythonについて勉強したい人は以下がおすすめです。私も持っていてたまに眺めて勉強していますものですのでぜひ購入して学習してみてください。
リンク
コメント