2016-12-08 13 views
0

Я пытался работать над проектом, чтобы определить временной сдвиг между двумя потоковыми аудиосигналами. Я работал с python3, Pyaudio, и я использую звуковую карту Motux828 с микрофоном Neumann KU-100, который использует стереофонический вход. Поэтому, когда я проверяю свой input_device_index, я верный, который является четвертым, подключенным к звуковой карте MOTU.Pyaudio запись wav-файла со звуковой картой дает пустую запись

Однако, когда я запись с:

import time 
import pyaudio 
import wave 


CHUNK = 1024 * 3 # Chunk is the bytes which are currently processed 
FORMAT = pyaudio.paInt16 
RATE = 44100 
RECORD_SECONDS = 2 
WAVE_OUTPUT = "temp.wav" 
p = pyaudio.PyAudio() 
stream = p.open(format=FORMAT,channels=2,rate=RATE,input=True,frames_per_buffer=CHUNK,input_device_index=4) 

frames = [] # np array storing all the data 

for i in range(0, int(RATE/CHUNK * RECORD_SECONDS)): 
    data = stream1.read(CHUNK) 
    frames.append(data1) 




stream.stop_stream() 
stream.close() 
p.terminate() 

wavef = wave.open(WAVE_OUTPUT, 'wb') # opening the file 
wavef.setnchannels(1) 
wavef.setsampwidth(p.get_sample_size(FORMAT)) 
wavef.setframerate(RATE) 
wavef.writeframes(b''.join(frames1)) # writing the data to be saved 
wavef.close() 

Я записать звуковой файл без звука, почти без шума (естественно)

Также я могу записать с 3 участника программного обеспечения с конкретным микрофон. Он работает полностью, отлично.

ПРИМЕЧАНИЕ: Звуковая карта 24-битная глубина нормально, я также попытался paInt24, который записывает звуковой файл с чистым шумом

+0

Неправильное устройство ввода, некоторые отсутствуют 'суб index', что вход Channell перенаправлять куда? Нужно управлять устройствами ввода перед использованием, в Linux необходимо перенаправить на «ALSA». – dsgdfg

+0

Вы можете использовать [plot_input.py] (https://github.com/spatialaudio/python-sounddevice/blob/master/examples/plot_input.py), чтобы увидеть, действительно ли на вашем устройстве ввода есть сигнал. – Matthias

ответ

0

Я думаю, что у упомянутых неправильные имена переменных, как я видел ваш код. Неправильные переменные:

data = stream1.read(CHUNK) 
frames.append(data1) 
wavef.writeframes(b''.join(frames1)) 

правильные значения:

data = stream.read(CHUNK) 
frames.append(data) 
wavef.writeframes(b''.join(frames))