Мне нужно захватить аудио 192 кГц для некоторых экспериментов по биоакустике с использованием Python 3. У меня есть аппаратное обеспечение, звуковая карта Sound Devices USBPre 2, микрофон с хорошей частотой отклика до 100 кГц, и я включил свой os (ubuntu 13.04) для выборки с этой карты на частоте 192 кГц.
Я пробовал записывать с помощью PyAudio. Он работает, и даст мне wav файл с частотой дискретизации 192 кГц. Однако, когда я смотрю на спектры, нет мощности выше 24 кГц, что говорит о том, что PyAudio на самом деле не захватывает 192 кГц, а скорее на частоте 48 кГц. Однако, когда я записываю использование Audacity с вводом от JACK, я получаю хорошую запись с мощностью до 96 кГц. Итак, у меня сложилось впечатление, что PyAudio на самом деле не пробует звук на 192 кГц, хотя он должен быть способен. Как это исправить?
Я запускаю JACK без ошибок:
/usr/bin/jackd -R -dalsa -Chw:1,0 -n3 -o1 -p2048 -r192000
jackd 0.122.0
Copyright 2001-2009 Paul Davis, Stephane Letz, Jack O'Quinn, Torben Hohn and others.
jackd comes with ABSOLUTELY NO WARRANTY
This is free software, and you are welcome to redistribute it
under certain conditions; see the file COPYING for details
JACK compiled with System V SHM support.
loading driver ..
apparent rate = 192000
creating alsa driver ... -|hw:1,0|2048|3|192000|0|1|nomon|swmeter|-|32bit
control device hw:0
configuring for 192000Hz, period = 2048 frames (10.7 ms), buffer = 3 periods
ALSA: final selected sample format for capture: 24bit little-endian
ALSA: use 3 periods for capture
Инициализировать PyAudio (без каких-либо реальных ошибок (насколько я могу судить)):
p = pyaudio.PyAudio()
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
bt_audio_service_open: connect() failed: Connection refused (111)
bt_audio_service_open: connect() failed: Connection refused (111)
bt_audio_service_open: connect() failed: Connection refused (111)
bt_audio_service_open: connect() failed: Connection refused (111)
ALSA lib pcm_dmix.c:957:(snd_pcm_dmix_open) The dmix plugin supports only playback stream
Откройте поток PyAudio:
stream = p.open(format=pyaudio.paInt32,
channels=1,rate=192000,
input=True,
frames_per_buffer=2048)
У меня есть изображения спектрограмм, если кто-то хочет проверить мою интерпретацию, что PyAudio не захватывает 192 кГц (но Audacity делает):
Спектрограмма звука, захваченного usig PyAudio
Спектрограмма звука, захваченного usig Audacity
Как я могу записать звук с 192 000 сэмплов/с с помощью PyAudio? Также приветствуются предложения других способов захвата звука с помощью Python 3.