- Add .gitignore for Python, virtual environments, testing artifacts, IDE files, and LC3 test outputs including SQAM audio files - Add AGENTS.md with project context for LC3 implementation testing - Add LC3.TS.p5.pdf test specification document - Add LC3 conformance interoperability test software V1.0.8 with script readme and reference binary symlink
3.4 KiB
3.4 KiB
LC3 Encoder Qualification
Tests the lc3py encoder from bumble-auracast against the LC3 TS p5 conformance suite.
Scope: 15 ENC test cases, no 44.1 kHz (lc3py does not support 44.1 kHz).
1 — System packages
# Enable 32-bit architecture (required for wine32 to run LC3.exe)
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install -y \
wine \
gcc \
sox \
libgstreamer1.0-dev \
libgstreamer-plugins-base1.0-dev \
libgstreamer-plugins-bad1.0-dev \
autoconf automake libtool
sudo apt-get install -y wine32
# One-time: initialize a 32-bit Wine prefix (LC3.exe is a 32-bit Windows binary)
WINEARCH=win32 WINEPREFIX=~/.wine32 wineboot
The runner script (
run_enc_tests.py) setsWINEARCH=win32 WINEPREFIX=~/.wine32automatically.
2 — Build gstPEAQ (one-time)
gstPEAQ v0.6.1 is the open-source PEAQ implementation used as the ODG metric tool.
cd /tmp
wget https://github.com/HSU-ANT/gstpeaq/archive/refs/tags/version-0.6.1.tar.gz -O gstpeaq-0.6.1.tar.gz
tar xzf gstpeaq-0.6.1.tar.gz
cd gstpeaq-version-0.6.1
# Patch build system to skip gtk-doc (not needed for the binary)
touch ChangeLog
sed -i 's/^GTK_DOC_CHECK/#GTK_DOC_CHECK/' configure.ac
echo "" > gtk-doc.make
sed -i '81s/CLEANFILES +=/CLEANFILES =/' doc/Makefile.am
sed -i 's/GTK_DOC_CHECK(1.10,--flavour no-tmpl)/: # GTK_DOC_CHECK disabled/' configure
autoreconf -i --force
./configure
make -C src # build only the binary, skip doc
The binary and plugin will be at:
/tmp/gstpeaq-version-0.6.1/src/peaq/tmp/gstpeaq-version-0.6.1/src/.libs/libgstpeaq.so
These paths are already set in
conf_lc3ts_p5_enc_10ms.cfgandconf_lc3ts_p5_enc_75ms.cfg. If you build gstPEAQ elsewhere, updatepeaq_binin both cfg files.
3 — Set up LC3 reference binary (one-time)
cd /home/pstruebi/repos/lc3_quali
SCRIPT_DIR=LC3_conformance_interoperability_test_software_V1.0.8_2024-07-01/LC3_Conformance_Interoperability_Script
mkdir -p $SCRIPT_DIR/LC3_bin_current
ln -sf $(pwd)/LC3_conformance_interoperability_test_software_V1.0.8_2024-07-01/LC3_Reference_Binary/LC3.exe \
$SCRIPT_DIR/LC3_bin_current/LC3.exe
4 — Install Python venv
cd /home/pstruebi/repos/lc3_quali
poetry install
5 — Run
poetry run python qualification/run_enc_tests.py
Results are written to qualification/results/DD_MM_YY_HH_MM/:
SUMMARY.html— consultant-ready: all 15 TC IDs with PASS/FAILENC_*_<ts>.html— detail reports (ODG per SQAM item)conformanceCheck_<ts>.loglc3_conformance_<ts>/— audio comparison WAVs (ref_ref.wavvstst_ref.wav)
Test Cases (15 total)
10ms frame duration (7 cases)
| Test Case ID | kHz | kbps | Config |
|---|---|---|---|
| LC3/ENC/NB/BV-01-C | 8 | 24 | 10ms |
| LC3/ENC/WB/BV-01-C | 16 | 32 | 10ms |
| LC3/ENC/SSWB/BV-01-C | 24 | 48 | 10ms |
| LC3/ENC/SWB/BV-01-C | 32 | 64 | 10ms |
| LC3/ENC/FB/BV-01-C | 48 | 80 | 10ms |
| LC3/ENC/FB/BV-02-C | 48 | 96 | 10ms |
| LC3/ENC/FB/BV-03-C | 48 | 124 | 10ms |
7.5ms frame duration (8 cases)
| Test Case ID | kHz | kbps | Config |
|---|---|---|---|
| LC3/ENC/NB/BV-02-C | 8 | 27.734 | 7.5ms |
| LC3/ENC/WB/BV-02-C | 16 | 32 | 7.5ms |
| LC3/ENC/SSWB/BV-02-C | 24 | 48 | 7.5ms |
| LC3/ENC/SWB/BV-02-C | 32 | 64 | 7.5ms |
| LC3/ENC/SWB/BV-03-C | 32 | 61.867 | 7.5ms |
| LC3/ENC/FB/BV-07-C | 48 | 80 | 7.5ms |
| LC3/ENC/FB/BV-08-C | 48 | 96 | 7.5ms |
| LC3/ENC/FB/BV-09-C | 48 | 124.8 | 7.5ms |