10

Pythonのaudioop ドキュメントには、使用可能な関数のほとんどに「サウンド フラグメント」が必要であると記載されています。

audioop モジュールには、サウンド フラグメントに対するいくつかの便利な操作が含まれています。これは、Python 文字列に格納された 8、16、または 32 ビット幅の符号付き整数サンプルで構成されるサウンド フラグメントで動作します。

サウンド フラグメントとは正確には何ですか? また、既存の .wav ファイルをサウンド フラグメントに変換するにはどうすればよいですか?

ありがとう。

4

5 に答える 5

7

ウェーブモジュールを使用してこれを行うことができます

このopen()メソッドはファイルを開き、readframes(n)オーディオの (最大) n フレームをバイト文字列として返します。

たとえば、avg()audioop のメソッドを使用する必要があるとします。これはあなたがそれを行う方法です:

import wave
import audioop


wav = wave.open("piano2.wav")
print(audioop.avg(wav.readframes(wav.getnframes()), wav.getsampwidth()))

出力:

-2

rewind()また、 wave モジュールのメソッドに興味があるかもしれません。読み込み位置をwavファイルの先頭に戻します。

wav ファイルを 2 回読む必要がある場合は、次のように記述できます。

wav = wave.open("piano2.wav")
print(audioop.avg(wav.readframes(wav.getnframes()), wav.getsampwidth()))

# if you don't call rewind, next readframes() call 
# will return nothing and audioop will fail

wav.rewind() 
print(audioop.max(wav.readframes(wav.getnframes()), wav.getsampwidth()))

または、文字列をキャッシュすることもできます:

wav = wave.open("piano2.wav")
string_wav = wav.readframes(wav.getnframes())
print(audioop.avg(string_wav, wav.getsampwidth()))
# wav.rewind()
print(audioop.max(string_wav, wav.getsampwidth()))
于 2015-06-03T23:10:32.100 に答える
3

モジュールを調べることができwaveます。ファイルを読み取りモードで開き、readframes必要なサンプルを取得するために使用することをお勧めします。audiooop.

于 2015-06-03T22:54:24.707 に答える
1

フラグメントとは何かを正確に答えるために、それは単なるバイト文字列であるバイトオブジェクトです。8 ビット オーディオ ファイルの場合、8 ビット オーディオの場合はフレームごとに 1 バイト、16 ビット オーディオの場合はフレームごとに 2 バイト、32 ビット オーディオの場合は 4 バイトになると思います。

于 2018-01-06T23:39:34.987 に答える