6

Python スクリプトで SOX などのツールを使用して、.pcm ファイルを .wav ファイルに変換したいと考えています。このツールはクロス プラットフォームと互換性がある必要があります (Windows と Linux)。助言がありますか?

4

1 に答える 1

20

これには実際にツールは必要ありません。Python 標準ライブラリには、wave.wav ファイルを書き込むためのモジュールが付属しています。もちろん、生の .pcm ファイルはプレーン バイナリ ファイルとして開くことができます。リスト内包表記では簡単ではない単純な変換を行う必要がある場合は、は自明audioopです。

たとえば、これはステレオ 16 ビット リトル エンディアン 44.1k PCM ファイルを WAV ファイルに変換する完全なプログラムです。

import sys
import wave

for arg in sys.argv[1:]:
    with open(arg, 'rb') as pcmfile:
        pcmdata = pcmfile.read()
    with wave.open(arg+'.wav', 'wb') as wavfile:
        wavfile.setparams((2, 2, 44100, 0, 'NONE', 'NONE'))
        wavfile.writeframes(pcmdata)

古いバージョンの Python では、(またはステートメントの代わりにwith contextlib.closing(wave.open(…))明示的なopenandを使用する必要がある場合があります)。closewith

于 2013-04-19T18:23:13.113 に答える