Я работаю над процессом шумоподавления в роботе NAO для локализации звука. Я вызываю модуль «setClientPreferences» с частотой дискретизации 48000 кГц во всех каналах (чередование) для записи:
channelFlag = 0
deinterleave = 0 # deinterleave = 1
sampleRate = 48000
audio.setClientPreferences(self.getName(),sampleRate,channelFlag,deinterleave)
и получить данные буфера с помощью этой функции:
def processRemote(self,numChannels,samplesPerChannel,timeStamp,buffer):
print "channels = ",numChannels," samples = ",samplesPerChannel
soundDataInterleaved = np.fromstring(str(buffer),dtype=np.int16)
self.soundData = np.reshape(soundDataInterleaved,(numChannels,samplesPerChannel),'F')
Проблема возникает, когда я пытаюсь восстановить данные в файл wav с той же частотой дискретизации (48000) с помощью python / matlab для тестирования, результат воспроизводится быстрее, чем то, что я записал, но звучит более регулярно, когда он установлен на половину частота дискретизации (24000). Та же проблема возникает, когда я сначала устанавливаю частоту 16000 кГц.
Как я могу решить эту проблему? Это действительно важно, так как мне нужна точная частота дискретизации, чтобы применить кубтракцию спектра. Также меня смущает количество образцов для одного канала, которые также описаны в здесь.
Спасибо!