0

我一直在尝试一个项目来检测两个流音频信号之间的时间偏移。我使用的是 python3、Pyaudio,我使用的是 Motux828 声卡和一个带有立体声输入的 Neumann KU-100 麦克风。所以当我检查我input_device_index的时,我是正确的,它是连接到 MOTU 声卡的第四个。

但是,当我记录时:

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()

我录制了一个没有声音的波形文件,几乎没有噪音(自然)

我也可以使用带有特定麦克风的 3rd 方软件进行录制。它完全有效,很好。

注意: 声卡通常是24位深度的,我也试过paInt24用纯噪声录制波形文件

4

1 回答 1

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))
于 2017-03-30T07:02:13.623 回答