Alsa записывает двойную скорость
Отказ от ответственности: я писал по той же проблеме (с другой точки зрения) здесь
Я использую микрофон SPH0645 I2S с кастомным драйвером .
Это швы правильно распознаны alsa:
arecord -l
**** List of CAPTURE Hardware Devices ****
card 0: imxaudiosph0645 [imx-audio-sph0645], device 0: imx-sph0645 snd-soc-dummy-dai-0 []
Subdevices: 1/1
Subdevice #0: subdevice #0
При записи с помощью звук увеличивается на 2
При записи с помощью Arecordarecord -d (продолжительность):
- продолжительность команды в два раза больше запрошенной
- записанный файл имеет правильную продолжительность, но его скорость увеличивается на 2
Я использовал осциллограф, чтобы проверить часы BCLK и часы кадра (WS):
time arecord -D hw:0,0 -r 48000 -f S32_LE -c 1 -d 5 -t wav -v 48000_32_1.wav
fsl_sai logs : clk_rate = 3072000, ratio = 1, ret = 0, freq = 3072000
Record time : 10s
File duration : 5s
Osciloscope BCLK clock 3.072 MHz, frame (WS) clock 48kHz
When opening the file in audacity, the configuration is correct but its length is 5 sec but it is speed up.
Пример звука: здесь
Насколько я понимаю, часы правильные. В таблице данных указано: «Частота передискретизации зафиксирована на уровне 64, поэтому сигнал WS должен быть BCLK / 64 и синхронизирован с BCLK».
Может быть, где-то в alsa есть конфигурация, о которой я не знаю?
Дайте мне знать, если я могу добавить дополнительную информацию.
1 ответ
Я нашел решение и разместил его в своем первоначальном посте на форуме nxp .
Ошибка была в драйвере:
- snd_soc_dai_set_sysclk(cpu_dai, 1, bclk, SND_SOC_CLOCK_OUT);
+ snd_soc_dai_set_sysclk(cpu_dai, 0, bclk, SND_SOC_CLOCK_OUT);
Обновленный патч драйвера можно найти здесь