2016-12-08 26 views
0

두 개의 스트리밍 오디오 신호 사이의 시간 이동을 감지하기 위해 프로젝트 작업을 해왔습니다. 나는 python3, Pyaudio와 함께 작업했으며, Motux828 사운드 카드를 사용하여 스테레오 입력을받는 Neumann KU-100 마이크를 사용하고 있습니다. 그래서 내 input_device_index을 확인하면 MOTU 사운드 카드에 연결된 4 번째 하나 인 올바른 번호입니다.사운드 카드가있는 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))