Można to zrobić za pomocą wave module
Sposób open()
otwiera plik i readframes(n)
powroty (maksimum) n ramki audio jako ciąg bajtów, właśnie to, czego chce audioop.
Na przykład, powiedzmy, że musisz użyć metody avg()
z audioop. W ten sposób można to zrobić:
import wave
import audioop
wav = wave.open("piano2.wav")
print(audioop.avg(wav.readframes(wav.getnframes()), wav.getsampwidth()))
Wyjścia:
-2
Ponadto, może być zainteresowany w metodzie z modułu fali rewind()
. Przywraca pozycję czytania do początku pliku wav.
Jeśli chcesz zapoznać się z pliku wav razy można napisać tak:
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()))
Lub alternatywnie można buforować ciągu:
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()))
Dzięki za to, bardzo dokładne! – Will