0
0

【Python】音声ファイル変換・webmからwavに変換

Last updated at Posted at 2024-06-23

概要

Pythonのffmpegを用いて、webmファイルをwavファイルに変換する
ffmpegはほかにもいろんな音声ファイルに変換できる

事前準備

  1. 以下の公式サイトからffmpegをダウンロード
    https://ffmpeg.org/download.html

  2. 解凍したらbinのなかに入っているexeファイルを適当なフォルダに入れる

  3. システム環境変数にそのフォルダのパスを通す

  4. VScodeのターミナルなどでffmpegをインストールする

コード

import ffmpeg

input_file = 'aiu.webm'
output_file = 'aiu.wav'

(
    ffmpeg
    .input(input_file)
    .output(output_file)
    .run()
)

注意

Error opening input: No such file or directory

このようなエラーが出たときは、実行した際のカレントディレクトリを確認してみて。
そのpythonのファイルからたどった音声ファイルのパスは正しくても、実行時のターミナルのカレントディレクトリが違うとエラーがでたよ

ちなみに

直接データを変更する場合、

aiu.webmのバイナリデータを受け取る

バイナリデータからwavのデータに変換する

wavファイルとして保存する


import ffmpeg
import subprocess

# バイナリデータを読み込む
with open('aiu.webm', 'rb') as f:
    input_data = f.read()

# ffmpegプロセスの実行
process = (
    ffmpeg
    .input('pipe:0', format='webm')  # 'pipe:0' は標準入力からデータを受け取る指定
    .output('pipe:1', format='wav')  # 'pipe:1' は標準出力にデータを出力する指定
    .run_async(pipe_stdin=True, pipe_stdout=True, pipe_stderr=True)
)

# ffmpegにデータを渡して、出力データを取得
output_data, err = process.communicate(input=input_data)

# 出力データをファイルに書き込む
with open('aiu.wav', 'wb') as f:
    f.write(output_data)

# エラーメッセージを表示(必要に応じて)
if process.returncode != 0:
    print("Error:", err.decode())

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0