应评估和实现的内容:
我试图通过硬盘和特别是软件以最小的影响来录制音频数据。在使用Adobe Audition一段时间之后,我偶然发现了PyAudio并且受到了好奇心的驱使以及刷新我的Python知识的可能性。 由于上面标题中显示的事实可能已经放弃,我比较了两个波形文件(实际上是它们的部分)的样本值,并且必须发现两个程序产生不同的输出。 因为我绝对是在我的智慧结束,我希望找到一个可以帮助我的人。
到目前为止所做的工作:
M-Audio“M-Track双声道USB接口”已用于同时录制带有Audition CS6和PyAudio的音频数据,因为以下步骤按给定的顺序执行......
现在必须检查数据:
有没有人知道为什么Audition会显示不同的样本值,特别是哪里有错误(有没有?)隐藏?
一些(有趣的)观察
a)当调用pyaudio.PyAudio()。get_default_input_device_info()方法时,默认采样率列为44,1 kHz,即使默认的M-Track采样率据说其规格为48 kHz(实际上是Audition)如果选择了另一个速率,则通过重新采样输入数据来识别48 kHz。任何想法为什么以及如何改变这个?
b)使用PyAudio所覆盖的序列的开头对齐这两个文件,并检查它们是否仍然处于“同相”状态,结果显示没有 - PyAudio更短并且似乎丢失了样本(即使没有引发异常并且“溢出时的异常”参数为“True”)c)在流打开方法中使用“frames_per_buffer”关键字我无法对齐这两个文件,不知道Python从何处获取数据。
d)使用“.get_default_input_device_info()”方法并尝试不同的采样率(22,05 k,44,1 k,48 k,192 k)我总是收到True作为输出。
官方规格M-Track:
位深度= 24位 采样率= 48 kHz 通过XLR输入 通过USB输出
规格计算机和软件:
Windows 8.1 I5-3230M @ 2,6 GHz 8 GB RAM Python 3.4.2与PyAudio 0.2.11 - 32位 试听CS6版本5.0.2
Python代码
import pyaudio
import wave
import time
formate = pyaudio.paInt24
channels = 1
framerate = 48000
fileName = 'test ' + '.wav'
chunk = 6144
# output of stream.get_read_available() at different positions
p = pyaudio.PyAudio()
stream = p.open(format=formate,
channels=channels,
rate=framerate,
input=True)
#frames_per_buffer=chunk) # observation c
# COUNTDOWN
for n in range(0, 30):
print(n)
time.sleep(1)
# get data
sampleList = []
for i in range(0, 79):
data = stream.read(chunk, exception_on_overflow = True)
sampleList.append(data)
print('end -', time.strftime('%d.%m.%Y %H:%M:%S', time.gmtime(time.time())))
stream.stop_stream()
stream.close()
p.terminate()
# produce file
file = wave.open(fileName, 'w')
file.setnchannels(channels)
file.setframerate(framerate)
file.setsampwidth(p.get_sample_size(formate))
file.writeframes(b''.join(sampleList))
file.close()
图1:首次比较试听 - PyAudio image 1
图2:第二次比较试听 - Pyaudio image 2