🐳

M1macでpyaudioを動かしたい

2022/12/20に公開

前書き

普段は大学で音声分析の研究をしている傍ら、Web開発に勤しんでいます。
今回の記事は、「pyaudioがm1で動かなくて...」と後輩に相談されたので確認してみたところ、どの記事も1年前のもので再現性が低かったので改めて2022年12月現在、動く手段を書き記しています。

m1でpython使うならdocker使おうね

ローカルにpythonやら必要なパス通してやってやらゴニョゴニョして...と言う記事を多く見かけるんですが、ローカル汚れるし理解せずにそれやると沼るんで、docker使おうね!と言う記事です。

早速ファイル

Dockerfile
FROM python:3
USER root

RUN apt-get update
RUN apt-get -y install locales && \
    localedef -f UTF-8 -i ja_JP ja_JP.UTF-8
RUN apt-get install -y vim less
RUN apt-get install -y portaudio19-dev
RUN apt-get install -y libasound-dev
RUN apt-get install -y pulseaudio

RUN mkdir -p /root/src
COPY requirements.txt /root/src
WORKDIR /root/src

RUN pip install --upgrade pip
RUN pip install --upgrade setuptools
RUN pip install -r requirements.txt
docker-compose.yml
version: '3'
services:
  python3:
    platform: 'linux/amd64'
    devices:
      - /dev/snd
    environment:
      - PULSE_SERVER=docker.for.mac.localhost
    restart: always
    build: .
    container_name: 'python3'
    working_dir: '/root/src'
    tty: true
    volumes:
      - ${PATH_TO_DIR}/root/src
      - ~/.config/pulse:/root/.config/pulse
requirements.txt
pyaudio
matplotlib
numpy
wave
# 必要なライブラリを指定

注意点

Dockerfile ではpyaudioの他にportaudioをinstallしてあげる必要があります。
また、docker-compose.ymlではplatform: 'linux/amd64'を指定してあげる必要があります。

まとめ

mac欲しさにm1に飛びついた訳ですが、pythonと仲が悪く度々苦しめられているので、少しでも救いになれば良いな、といった気持ちです。。。よきm1ライフを!

catallaxy tech blog

Discussion