Rockchip · AI & Linux Hub

Display und Audio

Rockchip RockAA Utils: Offline- und Echtzeittests von Audioalgorithmen

Rockchip RockAA Utils: Offline- und Echtzeittests von Audioalgorithmen — V1.0.0

· ArmSoM Editorial · Rockchip source documentation · 6 Min. Lesezeit

Vollständiger Inhalt der chinesischen/englischen V1.0.0 zu RockAA-Utils-Tests. Originalgeltung: alle Serien/allgemein; für ArmSoM eine Plattformreferenz, die Prüfung von SoC, SDK/BSP, Audio-I/O, ALSA-Geräten und Algorithmusbibliotheken erfordert. Zeit-/Lastprotokolle sind keine ArmSoM-Messungen. Keine Audiobefehle ausgeführt. Keine technischen Abbildungen vorhanden.

ArmSoM Docs · Rockchip Linux

1. Überblick

1.1 Funktionen von RockAA Utils

RockAA (Rockchip Audio Algorithm) Utils ermöglicht eine schnelle erste Prüfung von Rockchip-Audioalgorithmen ohne Medienframework. Nach dem Vorbild von tinycap und tinyplay besteht es hauptsächlich aus rockaa_capt und rockaa_play; Befehlsparameter wählen das Testszenario. Beide nutzen librockaa.so. rockaa_capt dient vor allem Gesprächstests, rockaa_play Wiedergabeeffekten; ihre Algorithmusbibliotheken unterscheiden sich daher:

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

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

2. Szenarien und Verwendung

Hauptszenarien: Gespräch/Gegensprechen (Talk) und Wiedergabeeffekte (Playback Effect).

2.1 Offline-Gesprächstest aus einer Datei

Vor dem Abstimmen wird meist auf einem Seriengerät mit festgelegtem Aufbau Audio aufgezeichnet. Diese feste Eingangsquelle dient zur Parameteroptimierung, bis die gewünschten Audiodaten ausgegeben werden:

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

Dieses Protokoll kennzeichnet den Offline-Gesprächstest aus einer Datei:

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

Wesentliche Parameter:

-I ist der einzige Schalter zwischen Offlinedatei und Onlinemodus. Mit -I dient record.pcm als zuvor aufgezeichnete Eingangsquelle.

-O out_talk.pcm bestimmt den verarbeiteten PCM-Ausgabename: ein Kanal, Bitbreite und Rate gemäß -b 16 -r 16000. Ohne -O beginnt der Ausgabename mit TALK.

-c 2 ist die Gesamtkanalzahl, -C 1 die Zahl der Fernreferenzkanäle. Nahmikrofonkanäle sind die Differenz: 2-1=1, also ein Mikrofon.

-b 16 -r 16000 legt 16bit und 16kHz fest. -Z 1 aktiviert summary debug mode: Nach Testende werden Bildzahl sowie minimale/maximale/mittlere Zeit und Last ausgegeben.

-Z 0 deaktiviert Statistiken, -Z 2 zeigt Zeit und Last jedes Frames. -Z 3 kombiniert -Z 1 und -Z 2: jeden Frame und eine abschließende Zusammenfassung.

-F config_aivqe.json bestimmt die JSON-Algorithmusparameter. Ohne diese Option endet der Offlinemodus mit einem Fehler. Originalprotokolle und Befehle folgen unten.

[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 Online-Gesprächstest in Echtzeit

Nach erfolgreicher Offline-Abstimmung -I weglassen, um zum Echtzeit-Onlinetest näher an der tatsächlichen Nutzung überzugehen:

./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

Dieses Protokoll kennzeichnet den Echtzeit-Onlinetest:

[tagI] Capture via run-time process

Die meisten Parameter entsprechen dem Offlinetest; Unterschiede:

record.wav speichert das Audio vor der Verarbeitung als WAV. -D 0 -d 0 folgt TINYALSA/ALSA und wählt Aufnahme von card0/device0. -t 10 bedeutet 10 s Aufnahme. -F config_aivqe.json wählt die JSON-Parameter. Ohne -F wird bypass capture wie bei tinycap verwendet, mit dem unten gezeigten Protokoll.

./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 Offline-Test von Wiedergabeeffekten

Auch Wiedergabeeffekte können zunächst mit -I und einer vorhandenen Aufnahme offline abgestimmt werden:

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

Dieses Protokoll kennzeichnet den Offline-Effekttest:

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

Wesentliche Parameter:

-I bleibt der einzige Offline-/Online-Schalter; speech_2ch.wav ist die zuvor aufgezeichnete Eingangsquelle. -O out_effect.pcm bestimmt die PCM-Ausgabe, laut Original einkanalig mit Bitbreite und Rate -b 16 -r 16000. Ohne -O beginnt der Name mit EFFECTPLAY.

-c -b -r bestimmen Kanäle, Bitbreite und Abtastrate; das kleingeschriebene -i raw erzwingt PCM. Hier wird WAV automatisch analysiert und in seinem Format wiedergegeben.

-p 256 bedeutet 256 Abtastwerte je Frame: bei 16kHz sind das 256/16000=16ms. -Z 0/-Z 1/-Z 2/-Z 3 wirken wie bei rockaa_capt. -F config_playeffect.bin wählt die Effektkonfiguration; ohne sie endet der Offlinemodus mit dem unten gezeigten Fehler.

./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 Online-Test von Wiedergabeeffekten

Nach erfolgreicher Offline-Abstimmung -I für den Echtzeit-Online-Effekttest entfernen:

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

Dieses Protokoll kennzeichnet die Echtzeit-Online-Wiedergabe:

[tagI] Playback via run-time process

Die meisten Parameter bleiben gleich. Ohne -F wird bypass playback wie bei tinyplay verwendet und entsprechend protokolliert. Beispiel:

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

3. Ausführliche help-Informationen

Hilfe zu 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

Hilfe zu 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

Dieses Thema entdecken → · Lernpfade →