「Pythonで音声録音・再生を行いたい」
このような場合、PyAudioがその選択肢になります。
この記事では、PyAudioに関して説明していきます。
インストールして、実際に音声を再生するまでを説明します。
本記事の内容
- PyAudioとは?
- PyAudioのシステム要件
- PyAudioのインストール
- PyAudioの動作確認
それでは、上記に沿って解説していきます。
PyAudioとは?
PyAudioとは、PortAudioのPythonバインディングのことです。
PortAudioはクロスプラットフォーム対応のオーディオI/Oライブラリです。
また、PortAudioはC言語で開発されています。
そのため、PythonからPortAudioへ直接アクセスができません。
そこで、PyAudioの出番となります。
PyAudioを使えば、PythonからPortAudioにアクセスできます。
以上、PyAudioについての説明を行いました。
次は、PyAudioのシステム要件を確認します。
PyAudioのシステム要件
現時点(2021年8月)でのPyAudioの最新バージョンは、0.2.11となります。
この最新バージョンは、2017年3月19日にリリースされています。
結構前の話になりますね。
かれこれ4年以上は、更新されていないようです。
サポートOSに関しては、以下を含むクロスプラットフォーム対応です。
- Windows
- macOS
- Linux
サポート対象となるのは、以下のバージョンです。
- Python 2.7
- Python 3.4
- Python 3.5
- Python 3.6
そりゃ、Pythonのバージョンもこうなりますよね。
なお、Pythonの公式開発サイクルは以下。
バージョン | リリース日 | サポート期限 |
3.6 | 2016年12月23日 | 2021年12月 |
3.7 | 2018年6月27日 | 2023年6月 |
3.8 | 2019年10月14日 | 2024年10月 |
3.9 | 2020年10月5日 | 2025年10月 |
PyAudioの最後の更新時には、まだPython 3.7がリリースされていません。
ただし、Python 3.6が対応していれば、それ以降も問題なく動くことが多いです。
ここまで、OSとPythonについて見てきました。
これらだけなら、大抵の環境で動くはずです。
しかし、PyAudioはそうではありません。
特にWindows 10においては、動かない可能性が高いです。
というより、インストールの時点で失敗します。
インストール時のコンパイルにおいて、エラーが出るのです。
Cのコンパイラを利用して、PortAudioにアクセスするためのバイナリを作るのでしょう。
では、Windows 10の場合はPyAudioを諦めないといけないのでしょうか?
いや、そこはオープンソースの世界です。
有志の方が、ちゃんと用意してくれています。
それを頼りましょう。
以上、PyAudioのシステム要件の説明でした。
次は、PyAudioのインストールを行います。
PyAudioのインストール
PyAudioのインストールは、次の処理に分けて説明します。
- PyAudioパッケージのダウンロード
- PyAudioパッケージのインストール
それぞれを下記で説明します。
PyAudioパッケージのダウンロード
ダウンロードページ
https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyaudio
野良ページ(非公式)です。
カリフォルニア大学アーバイン校のChristoph Gohlke氏によるページとなります。
Gohlke氏は、多くのパッケージ(ビルド済み)を公開してくれています。
メンテナンスが行き届いていて、非常にありがたいです。
PyAudioのように、コンパイルを要するパッケージが多く公開されています。
コンパイルが必要だと、 Windows環境では何かとエラーが多いのでしょう。
そして、上記ページにアクセスすると、次のような表示を確認できます。
Python 3.7以降も用意してくれています。
ここから、各自の利用している環境にあったモノを選択します。
環境とは、具体的には以下となります。
- Pythonのバージョン
- アーキテクチャー(32bit or 64bit)
検証した環境は、以下の値となります。
Python | 3.9.6 | cp39 |
アーキテクチャー | 62bit | amd64 |
よって、上記の環境であれば、次のファイルを選択することになります。
PyAudio‑0.2.11‑cp39‑cp39‑win_amd64.whl
では、該当するファイルをクリックしてダウンロードします。
ダウンロードは、すぐに終わります。
PyAudioパッケージのインストール
まずは、現状のインストール済みパッケージを確認しておきます。
>pip list Package Version ---------- ------- pip 21.2.1 setuptools 57.4.0
次にするべきことは、pipとsetuptoolsの更新です。
pipコマンドを使う場合、常に以下のコマンドを実行しておきましょう。
python -m pip install --upgrade pip setuptools
では、PyAudioのインストールです。
PyAudioのインストールは、以下のコマンドとなります。
pip install ダウンロードしたファイル
今回の場合だと、以下。
pip install PyAudio-0.2.11-cp39-cp39-win_amd64.whl
インストールは、一瞬で終わります。
では、どんなパッケージがインストールされたのかを確認しましょう。
>pip list Package Version ---------- ------- pip 21.2.1 PyAudio 0.2.11 setuptools 57.4.0
他のパッケージに依存していないようです。
このことにより、PyAudioは既存の環境に導入しやすいと言えます。
ただし、コンパイルの件はクリアしないとダメでしょうけどね。
以上、PyAudioのインストールの説明でした。
最後に、PyAudioのインストールの動作確認を行います。
PyAudioの動作確認
PyAudioの動作確認を行います。
音声を再生するサンプルとなります。
import pyaudio import wave FILE_PATH = "test.wav" CHUNK = 1024 wf = wave.open(FILE_PATH, 'rb') # instantiate PyAudio (1) p = pyaudio.PyAudio() # open stream (2) stream = p.open(format=p.get_format_from_width(wf.getsampwidth()), channels=wf.getnchannels(), rate=wf.getframerate(), output=True) # read data data = wf.readframes(CHUNK) # play stream (3) while len(data) > 0: stream.write(data) data = wf.readframes(CHUNK) # stop stream (4) stream.stop_stream() stream.close() # close PyAudio (5) p.terminate()
注意すべき点は、以下。
FILE_PATH = "test.wav"
音声ファイルのパスを指定します。
そして、コードを実行するとその音声ファイルが再生されます。
以上、PyAudioの動作確認の説明でした。