È possibile farlo utilizzando la wave module
Il metodo open()
apre il file e readframes(n)
rendimenti (massimo) n cornici di audio come una stringa di byte, proprio ciò che vuole audioop.
Ad esempio, supponiamo che sia necessario utilizzare il metodo avg()
da audioop. Questo è come si potesse fare:
import wave
import audioop
wav = wave.open("piano2.wav")
print(audioop.avg(wav.readframes(wav.getnframes()), wav.getsampwidth()))
Uscite:
-2
Inoltre, si può essere interessati nel metodo rewind()
dal modulo onda. Riporta la posizione di lettura all'inizio del file wav.
Se avete bisogno di leggere attraverso il file wav per due volte è possibile scrivere questo:
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()))
Oppure, in alternativa è possibile memorizzare nella cache la stringa:
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()))
fonte
2015-06-03 23:10:32
Grazie per questo, molto approfondito! – Will