python - python3で24ビットのwavファイルを16または32ビットのファイルに変換する方法

原文 python audio wav

私はスペクトログラムの.wavファイルの束を作成しようとしているので、それらをさらに分析できます(Python 3.6で)が、この厄介なエラーが発生し続けます

 ValueError: Unsupported bit depth: the wav file has 24-bit data.


私は次のような他のスタックオーバーフローの記事を調べました
How do I write a 24-bit WAV file in Python?
しかし、これらは問題を解決しませんでした!

Pysoundfileというオーディオライブラリを見つけました

http://pysoundfile.readthedocs.io/en/0.9.0/

私はそれをインストールしました

pip3 install pysoundfile


ドキュメントを確認しましたが、24ビットの.wavファイルを32ビットのwavファイルまたは16ビットのwavファイルに変換してスペクトログラムを作成する方法はまだわかりません。

助けていただければ幸いです!
答え
このタスクにはSoXを使用することをお勧めします。ビット深度の変更は非常に簡単です。

sox old.wav -b 16 new.wav


Pythonを使用する必要がある場合は、PySoundFileを見つけたとおりに使用できます。以下に小さなコードスニペットを示します。

import soundfile

data, samplerate = soundfile.read('old.wav')
soundfile.write('new.wav', data, samplerate, subtype='PCM_16')


また、soundfile.available_subtypesを使用して、ファイルを変換できるサブタイプを確認する必要があります。ドキュメントから抜粋した使用例は次のとおりです。

>>> import soundfile as sf
>>> sf.available_subtypes('FLAC')
{'PCM_24': 'Signed 24 bit PCM',
 'PCM_16': 'Signed 16 bit PCM',
 'PCM_S8': 'Signed 8 bit PCM'}
関連記事

python - コアMLモデルの変換が「入力名と次元を推測できません」で失敗する

python - リスト内の値の最初の位置を見つける

python - リストのリストを長さでソートするときに元のインデックスを追跡する

python - SQLAlchemyを使用して2つのデータベースのテーブルを結合する

python - Python-ある配列を別の配列に「比較」する簡単な方法

python - パンダのWhere条件によるグループ化

python - PyQT5でカスタムウィジェットを作成する

python - ブラウザでJupyter / ipythonノートブックの周囲の灰色の境界線を削除するにはどうすればよいですか?

python - AnacondaでのFancyImputeのインストール

python - ImportErrorを使用する理由:lightgbmというモジュールはありません