2014-10-30 2 views
0

Я новичок в python и Raspberry pi. Я участвую в проекте, где мне нужно встроить поток бит в wav-файл. Сначала я открыл wav-файл, и это двухканальный 16-битный wav-файл. Чтобы изменить значения выборок, я должен преобразовать эти значения выборки в float. Я попробовал код. Но когда я запускаю модуль, он дает ошибки, поскольку «name struct» не определяется. А также здесь я попытался преобразовать данные в целые числа, так как я не знаю, как конвертировать в float. Если кто-то может помочь мне исправить эту программу или предложить другой код, тогда это будет большой помощью. Спасибо.Как преобразовать 16-битные данные PCM в float в python?

from struct import unpack 
import numpy as np 
import wave 

wavfile = wave.open('/home/pi/desktop/codes/mysong.wav','r') 
number_of_frames = wavfile.getnframes() 
no_channels = wavfile.getnchannels() 
raw_data = wavfile.readframes(number_of_frames) 

total_samples = number_of_frames * no_channels 
fmt = "%ih" % total_samples 
integer_data = struct.unpack(fmt,raw_data) 
+0

Вы забыли «импортировать структуру»? – jonrsharpe

+0

как это сделать? мне нужно вводить структуру импорта? Но я включил ее из struct.is это неправильно? скажите мне, пожалуйста, –

+1

Либо «из строки импорта foo», то вызывают 'bar (...)' или 'import foo' и вызывают' foo.bar (...) ', но не смешиваются и не сопоставляются. – jonrsharpe

ответ

0

Как @jonrsharpe сказал, вы либо:

# if using from ... import ... 
from struct import unpack 
... 
# then change this to 
integer_data = unpack(fmt,raw_data) 

... 

# if using import ... 
import struct 
... 
# then this will work fine 
integer_data = struct.unpack(fmt,raw_data) 

Но не следует смешивать & матч импорта вместе.

+0

Thanx alot..It работал. Спасибо. Можете ли вы предложить способ преобразования этих данных в float? здесь я преобразовал в целое число. Это не мое первоначальное требование –

+0

@AsanthiAjithSinghUdawatta, я плохо разбираюсь в волноводе, но я могу взглянуть позже. Одна вещь, которую я заметил, вы назначаете «% ih», которые будут короткими целыми числами? как обычно обрабатывается 16-разрядная волна? – Anzel

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