Rockchip · AI & Linux Hub

Экран и звук

Rockchip RockAA Utils: офлайн- и онлайн-тестирование аудиоалгоритмов

Rockchip RockAA Utils: офлайн- и онлайн-тестирование аудиоалгоритмов — V1.0.0

· ArmSoM Editorial · Rockchip source documentation · 6 мин чтения

Полный материал китайского/английского V1.0.0 о тестировании RockAA Utils. Исходная область — все серии/общая; для ArmSoM это платформенная справка: проверяйте SoC, SDK/BSP, аудиовход/выход, ALSA-устройства и версии/доступность библиотек. Время и нагрузка в журнале не являются измерениями ArmSoM. Аудиокоманды не выполнялись. Технических рисунков нет.

ArmSoM Docs · Rockchip Linux

1. Обзор

1.1 Возможности RockAA Utils

RockAA (Rockchip Audio Algorithm) Utils позволяет быстро предварительно проверить аудиоалгоритмы Rockchip без зависимости от мультимедийной инфраструктуры. Проект основан на идеях tinycap и tinyplay и состоит прежде всего из rockaa_capt и rockaa_play; параметры команд выбирают сценарий проверки. Оба используют общую librockaa.so. rockaa_capt предназначен преимущественно для разговорной связи, rockaa_play — для эффектов воспроизведения, поэтому зависимости алгоритмических библиотек различаются:

rockaa_capt
├── librockaa.so            # rockaa⼯具公共库
├── libaec_bf_process.so    # 回声消除算法库
└── librkaudio_common.so    # ⾳频算法公共库

rockaa_play
├── librockaa.so            # rockaa⼯具公共库
└── librkaudio_effect.so    # ⾳效算法库

2. Сценарии и использование

Основные сценарии: разговорная связь (Talk) и эффекты воспроизведения (Playback Effect).

2.1 Офлайн-тест разговорной связи из файла

Обычно перед настройкой алгоритма звук заранее записывают на серийном устройстве с окончательной конструкцией. Этот фиксированный источник используют для настройки параметров до получения ожидаемого аудиовыхода:

./rockaa_capt -I record.pcm -O out_talk.pcm -c 2 -C 1 -b 16 -r 16000 -Z 1 -F config_aivqe.json

Этот журнал обозначает офлайн-тест разговорной связи из файла:

[tagI] Capture via offline file process, in_file: record.wav

Основные параметры:

-I — единственный переключатель между офлайн-файлом и онлайн-режимом. При его наличии record.pcm является заранее записанным входом.

-O out_talk.pcm задаёт имя выходного PCM после обработки: один канал, разрядность и частота соответствуют -b 16 -r 16000. Без -O имя выходного PCM начинается с TALK.

-c 2 — общее число каналов, -C 1 — число каналов опорного сигнала дальнего конца. Каналы ближнего микрофона равны разности: 2-1=1, один микрофон.

-b 16 -r 16000 задаёт 16bit и 16kHz. -Z 1 включает summary debug mode: после теста выводятся число кадров, минимальное/максимальное/среднее время и нагрузка.

-Z 0 отключает статистику, -Z 2 выводит время и нагрузку каждого кадра. -Z 3 сочетает -Z 1 и -Z 2: каждый кадр и итоговая сводка.

-F config_aivqe.json задаёт JSON параметров алгоритма. Без него офлайн-режим завершается с ошибкой. Исходные примеры журнала и команды приведены ниже.

[tagI] == frames:63, period_time:16000us, cost_time min:657us max:1375us
avg:793us, load min:4.11% max:8.59% avg:4.96% ==
[tagI] frame[1] period_time: 16000 us, cost_time: 942 us, load: 5.89%
[tagI] frame[2] period_time: 16000 us, cost_time: 808 us, load: 5.05%
[tagI] frame[3] period_time: 16000 us, cost_time: 858 us, load: 5.36%
./rockaa_capt -I record.wav -O out_talk.pcm -c 2 -C 1 -b 16 -r 16000 -Z 1
input file: record.wav
[tagE] Can't support in_file: record.wav without conf file

2.2 Онлайн-тест разговорной связи в реальном времени

После удовлетворительной офлайн-настройки исключите -I, чтобы перейти к онлайн-тесту в реальном времени, более близкому к пользовательскому сценарию:

./rockaa_capt record.wav -O out_talk.pcm -D 0 -d 0 -c 2 -C 1 -b 16 -r 16000 -Z 1 -F config_aivqe.json

Этот журнал обозначает онлайн-разговор в реальном времени:

[tagI] Capture via run-time process

Большинство параметров совпадает с офлайн-тестом; отличия:

record.wav сохраняет исходный звук до алгоритма в WAV. -D 0 -d 0 следует TINYALSA/ALSA и выбирает запись с card0/device0. -t 10 означает 10 s записи. -F config_aivqe.json выбирает JSON параметров. Без -F включается bypass capture, эквивалентный tinycap, с приведённым ниже журналом.

./rockaa_capt record.wav -D 0 -d 0 -c 2 -C 1 -b 16 -r 16000 -Z 1
[tagI] Not specify conf_path and capture raw pcm directly

2.3 Офлайн-тест эффектов воспроизведения

Для эффектов также сначала используйте -I и имеющуюся аудиозапись для офлайн-настройки:

./rockaa_play -I speech_2ch.wav -O out_effect.pcm -p 256 -Z 1 -F config_playeffect.bin

Этот журнал обозначает офлайн-тест эффектов:

[tagI] Playback via offline file process, in_file: speech_2ch.wav

Основные параметры:

-I по-прежнему единственный переключатель офлайн/онлайн; speech_2ch.wav — заранее записанный вход. -O out_effect.pcm задаёт выходной PCM, по исходнику одноканальный, с разрядностью и частотой -b 16 -r 16000. Без -O выходное имя начинается с EFFECTPLAY.

-c -b -r задают каналы, разрядность и частоту PCM; нижний регистр -i raw принудительно выбирает PCM. Здесь WAV разбирается автоматически и воспроизводится в своём формате.

-p 256 задаёт 256 отсчётов на кадр: при 16kHz это 256/16000=16ms. -Z 0/-Z 1/-Z 2/-Z 3 действуют как в rockaa_capt. -F config_playeffect.bin выбирает конфигурацию эффектов; без него офлайн-режим завершается с ошибкой, как показано ниже.

./rockaa_play -I speech_2ch.wav -O out_effect.pcm -p 256 -Z 1
[tagE] Can't support in_file: speech_2ch.wav without conf file

2.4 Онлайн-тест эффектов воспроизведения

После удовлетворительной офлайн-настройки удалите -I для онлайн-теста эффектов в реальном времени:

./rockaa_play speech_2ch.wav -D 0 -d 0 -p 256 -Z 1 -F config_playeffect.bin

Этот журнал обозначает онлайн-воспроизведение в реальном времени:

[tagI] Playback via run-time process

Большинство параметров совпадает с предыдущими. Без -F включается bypass playback, эквивалентный tinyplay, с соответствующим журналом. Пример:

./rockaa_play speech_2ch.wav -D 0 -d 0 -p 256 -Z 1
[tagI] Not specify conf_path and playback raw pcm directly

3. Подробная справка help

Справка rockaa_capt:

# ./rockaa_capt
Usage: ./rockaa_capt [OPTION]...

-h, help
-v  print current version
-b, bits of samples
-r, the sample rate for stream (default: 16000)
-c, the number of channels (default: 2)
-C, the number of far-end channels (default: 1)
-p, the size of per-period (default: 256)
-n, the number of periods (default: 4)
-t, capture time (default: UINT_MAX)
-a, enable DOA and return result (default: disabled)
-F, the path of json config file, without it capture raw pcm directly
-I, use offline input file mode, without capture via sound card
-Z, use debug mode, 0:disabled 1:summary 2:per-frame 3:summary+per-frame
(default: 0)
For example:
    ./rockaa_capt cap.wav -c 2 -C 1 -b 16 -r 16000 -t 10 -Z 1 -F config_aivqe.json

Справка rockaa_play:

# ./rockaa_play
usage: ./rockaa_play file.wav [options]
options:
-D | --card   <card number>    The card to receive the audio
-d | --device <device number>  The device to receive the audio
-p | --period-size <size>      The size of the PCM's period
-n | --period-count <count>    The number of PCM periods
-i | --file-type <file-type>   The type of file to read (raw or wav)
-c | --channels <count>        The amount of channels per frame
-r | --rate <rate>             The amount of frames per second
-b | --bits <bit-count>        The number of bits in one sample
-f | --float                   The frames are in floating-point PCM
-M | --mmap                    Use memory mapped IO to play audio
-F | --conf-name               The parameters of configuration File, (Mandatory)
-I | --in-file                 Use offline input file mode, without playback via
sound card
-O | --out-file                The output file name
-Z | --debug-mode              Use debug mode, 0:disabled 1:summary 2:per-frame
3:summary+per-frame (default: 0)
For example:
    ./rockaa_play -I speech_2ch.wav -O out_effect.pcm -p 256 -Z 1 -F config_playeffect.bin

Другие статьи по теме → · Учебные маршруты →