Próbuję programowo podzielić plik wav w języku Python. Na podstawie wskazówek z stackoverflow, jak również dokumentacji z modułu fali Python robię następującedzielenie pliku wav w pytonie
import wave
origAudio = wave.open('inputFile.wav','r')
frameRate = origAudio.getframerate()
nChannels = origAudio.getnchannels()
sampWidth = origAudio.getsampwidth()
start = float(someStartVal)
end = float(someEndVal)
origAudio.setpos(start*frameRate)
chunkData = origAudio.readframes(int((end-start)*frameRate))
chunkAudio = wave.open('outputFile.wav','w')
chunkAudio.setnchannels(nChannels)
chunkAudio.setsampwidth(sampWidth)
chunkAudio.setframerate(frameRate)
chunkAudio.writeframes(chunkData)
chunkAudio.close()
iterację kilku różnych początkowych i końcowych wartości, a ekstrakt fragmenty audio z pliku w oryginalnym w ten sposób. Dziwne jest to, że ta technika działa doskonale w przypadku niektórych fragmentów i wytwarza biały szum dla innych. Nie ma też oczywistego wzorca, który z pozycji początkowej i końcowej generuje biały szum, tylko że dzieje się to konsekwentnie dla pliku wejściowego.
Ktoś wcześniej doświadczał tego rodzaju zachowań? Czy wiesz, co robię źle? Sugerowane są sugestie dotyczące lepszego sposobu dzielenia pliku audio programowo.
Z góry dziękuję.
Może to mieć związek z 'start * frameRate' będącym zmienną podczas wywoływania' setpos'. Być może po 'readframes' powinieneś użyć' tell' aby znaleźć bieżące położenie wskaźnika pliku zamiast ... – unutbu
arrgh! Głupi ze mnie ... dzięki. to naprawiło :) – user13321
kiedy używam tell w miejsce setpos, mogę uzyskać błąd: tell() przyjmuje 1 argument pozycyjny, ale 2 zostały podane –