2016-11-23 5 views
0

Я новичок в Python и программирования в целом, поэтому, пожалуйста, не принимайте это слишком сильно на меняПреобразование строки в файл WAV в питона

Я сейчас пытаюсь выяснить, как писать новый файл wav с использованием строки (которая была получена из данных другого волнового файла)

Я выполнил преобразование Фурье по данным этого файла, так что теперь я пытаюсь получить значения из преобразования Фурье, записанного в новый wav файл.

я могу использовать только NumPy и включенную библиотеку Python, не SciPy

Согласно документации, я должен использовать wave_write(), но я понятия не имею, что код должен выглядеть для этой функции ,

Я думаю, что я должен сделать что-то потом снова относящиеся к

wave_write.writeframesraw(data) 

, не совсем уверен, что делать. Любая помощь очень ценится!

+1

Почему не scipy? У вас есть [scipy.io.wavfile.write] (https://docs.scipy.org/doc/scipy/reference/generated/scipy.io.wavfile.write.html), который имеет ограничения, но в противном случае это просто используйте один раз, когда у вас есть массив Numpy. – Balzola

+0

Может помочь моя [учебник по волновому модулю] (http://nbviewer.jupyter.org/github/mgeier/python-audio/blob/master/audio-files/audio-files-with-wave.ipynb)? – Matthias

ответ

0

Две функции в NumPy могут помочь вам с этим: astype и tostring.

Если у вас есть массив звуковых образцов, скажем X, то вы можете преобразовать их в нужный формат, используя astype. Это будет зависеть от того, какой тип данных используется в wav-файле, и для библиотеки, которую вы используете для ее сохранения. Но позвольте нам в этом примере сказать, что вы хотите сохранить его как 16-битное целое число. Вам нужно будет масштабировать X в соответствии с выбранным типом данных, поэтому в этом случае диапазон будет от -32768 до 32767 для подписанного 16-битного int. Если образец переходит от -1,0 до 1,0, то вы можете просто умножить на 32767.

Следующая часть просто преобразовать его в строку, используя tostring, это может выглядеть следующим образом:

scaled = X * 32767 
scaled.astype('<i2').tostring() 

You можно найти документацию по следующим функциям: https://docs.scipy.org/doc/numpy/reference/generated/numpy.ndarray.astype.html https://docs.scipy.org/doc/numpy/reference/generated/numpy.ndarray.tostring.html

Смежные вопросы