2015-01-12 7 views
6

Podano, że większość dostępnych funkcji wymaga "fragmentów dźwięków".Jaki typ pliku jest parametrem "fragmentu dźwiękowego" dla audioop?

Moduł audioop zawiera przydatne operacje na fragmentach dźwięków. Działa na fragmentach dźwiękowych składających się ze znaków całkowitych ze znakiem o szerokości 8, 16 lub 32 bity, przechowywanych w ciągach Pythona.

Czym dokładnie jest fragment dźwiękowy i jak zmienić istniejący plik .wav w jeden?

Dzięki.

Odpowiedz

4

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())) 
+0

Dzięki za to, bardzo dokładne! – Will

3

Możesz zajrzeć do modułu wave. Prawdopodobnie chcesz otworzyć plik w trybie odczytu i używać readframes aby uzyskać próbkę potrzeba do audiooop.

1

Aby odpowiedzieć na to, co dokładnie fragment jest to a bytes object, który jest tylko ciągiem bajtów. Sądzę, że w przypadku 8-bitowych plików audio byłby jeden bajt dla każdej klatki dla 8-bitowego dźwięku, dwa bajty dla każdej ramki dla 16-bitowego dźwięku i cztery bajty dla 32-bitowego dźwięku.