Pythonで音声録音・再生ができるPyAudioのインストール

Pythonで音声録音・再生ができるPyAudioのインストール プログラミング

「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.62016年12月23日2021年12月
3.72018年6月27日2023年6月
3.82019年10月14日2024年10月
3.92020年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)

検証した環境は、以下の値となります。

Python3.9.6cp39
アーキテクチャー62bitamd64

よって、上記の環境であれば、次のファイルを選択することになります。

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の動作確認の説明でした。

タイトルとURLをコピーしました