SoundFlow Kardome Tuning Runbook
이 문서는 A1 SoC soundflowservice에 Kardome v1.1.18을 적용하고, Mesh+Mini 형상에서 Custom F의 파형 품질을 유지하면서 낮은 출력 RMS를 보정하기 위한 설치·튜닝·수집 작업 가이드다.
4조건 KWS/STT/노이즈 결과와 재튜닝 설계는 SoundFlow Mesh × Template A KWS/STT 정밀 분석을 기준 보고서로 사용한다.
Mini Custom A-D 풍량 시험은 Mini Custom A-D 통합 분석을 참조한다.
Original/Mesh/Mini와 decoder·음향 proxy를 한 번에 비교할 때는 기존 A1·Mini·Custom EQ 통합 분석을 기준으로 한다.
적용 범위
대상 코드/산출물:
SoC repo: /home/silogood/work/1.A1_SoC_new/SoC/a1_um_quber
Output: output/sndflow_kardome_1.1.18_eq_gain_20260903
Service: vendor.quber.hardware.soundflowservice@1.0-service
Kardome: thirdparty/Kardome/2026-08-09_v1.1.18
테스트 목적:
1. 최신 Kardome library와 SoundFlow service가 기기에서 정상 로딩되는지 확인한다.
2. mesh 적용 후 줄어든 입력 RMS를 보정한다.
3. 제품 높이 감소로 늘어날 수 있는 저역 울림/바닥 반사/구조물 진동을 줄인다.
4. STT에 유리한 음성 명료도와 안정적인 SNR을 확보한다.
5. 파형 gate 통과 후보만 실제 WER/CER로 확인한다.
2026-09-03 현재 권장 시험
기존 F-V04/V05/V06에서 vol=0.4/0.5/0.6은 적용됐지만 speech output RMS는 각각 -73.051/-73.050/-73.221 dBFS로 회복되지 않았다. 코드상 vol은 고정 PCM 배율이 아니라 AGC_MAX_GAIN_ZONE이다.
따라서 다음 시험은 이미 수행한 vol=0.6 반복이 아니라, 신규 property persist.vendor.audio.sndflow.krdm.eq_total_gain을 사용한다. 나머지 F 값은 고정하고 0 → 3 → 6만 변경한다. 9는 G6의 clip/headroom gate 통과 시에만 수행한다.
KWS sensitivity는 이번 파형 시험에서 unset으로 둔다. 기존 값 3은 1.1.18에서 거부됐고 KWS 성공률도 이번 후보 선택 지표가 아니다.
export ADB_SERIAL=<device-serial>
cd /home/silogood/work/1.A1_SoC_new/SoC/a1_um_quber/output/sndflow_kardome_1.1.18_eq_gain_20260903
./scripts/install.sh
./scripts/apply_profile.sh MM118_DEFAULT
./scripts/apply_profile.sh F_G0
./scripts/apply_profile.sh F_G3
./scripts/apply_profile.sh F_G6
각 profile별 WAV 수집은 ./scripts/collect_outputs.sh <label>을 사용한다. 상세 비교·판정 기준은 A1 → Mini → Mesh+Mini 통합 음성 파형 분석을 따른다.
아래 2026-07/08 템플릿 결과는 이전 실측 이력이다. 현재 Mesh+Mini RMS 회복 시험보다 우선 적용하지 않는다.
2026-08-18 Mini A1 RMS 보상 판정
높이가 약 70 cm 낮아진 Mini A1은 기존 A1 대비 MIC RMS가 4조건 평균 -12.65 dB, 출력 RMS가 평균 -11.41 dB 낮다. 현재 제품 상태에서 RMS가 전반적으로 낮게 관측된 것은 확인됐다. 아래 판정은 Custom 필터 A-D가 이 저하를 보상할 수 있는지를 본다.
| 후보 | 평균 출력 RMS | 전달량 | output floor | 판정 |
|---|---|---|---|---|
| Custom A | -0.23 dB | -1.12 dB | -1.13 dB | 강풍·터보 부분 회복, 후속 기반안 |
| Custom B | -1.37 dB | -1.91 dB | -2.05 dB | noise 억제 비교군 |
| Custom C | -0.55 dB | -1.46 dB | -1.44 dB | 회복량 미미, 변동 큼 |
| Custom D | -0.74 dB | -1.56 dB | -1.47 dB | 보류 |
네 후보 모두 Mini Original 대비 평균 출력 RMS가 음수다. 따라서 현재 필터 단독으로 Mini RMS 저하를 회복하지 못했다. 확인된 공통 이득은 output floor 감소이고, 그 대가로 전달량과 레벨 안정성에 비용이 생겼다.
Custom A는 강풍 +0.57 dB, 터보 +1.67 dB로 출력 RMS가 부분 회복됐지만 약풍 -2.03 dB, 중풍 -1.11 dB로 악화했다. A를 바로 채택하지 않고 필터 기반안으로 사용한다.
Mini 로그 20개에서 찾은 KWS 기록 23건은 모두 0이고 정답 전사문·decoder 결과가 없다. 따라서 현재 수치로 KWS hit-rate 또는 STT WER/CER가 개선됐다고 말할 수 없다.
튜닝 원칙:
- Mini Original의 현재 property 상태를 B0로 고정한다.
A 필터 단독 → A + gain/vol 단계 보상으로 필터와 증폭을 분리한다.- gain은 전체 RMS만 올리는 것이 아니라 speech-active RMS/SBR 회복을 목표로 하고 floor/headroom을 동시에 Gate로 둔다.
- KWS sensitivity는 음향 전처리와 gain 확정 뒤 마지막에 조정한다.
- A + gain 후보가 RMS 회복, KWS 기준선 유지, WER/CER 비열화, dropout 1% 이하, floor 개선을 동시에 만족할 때만 승격한다.
기존 A1과 Mini의 팬 SPL이 서로 달라 높이 효과는 아직 인과 미확정이다. 높이 축은 기존 A1 vs Mini Original, EQ 축은 Mini Original vs A/B로 나눠 동일 조건에서 재시험한다. 전체 수치와 증거 수준은 기존 A1·Mini·Custom EQ 통합 분석에서 확인한다.
2026-07-29 Mesh × Template A 실측 업데이트
이번 2×2 비교의 Custom 조건은 Original과 Mesh 모두 아래의 동일한
Template A를 적용했다.
persist.vendor.audio.sndflow.vol=0.4
persist.vendor.audio.sndflow.krdm.kws.sensitivity=3
persist.vendor.audio.sndflow.krdm.pre_filter=5,120,0,0
persist.vendor.audio.sndflow.krdm.eq_filter=0,1800,2,1;0,3000,1,1
비교 조건:
| 조건 | Mesh | Template A |
|---|---|---|
| Original Default | 없음 | 미적용 |
| Original Custom | 없음 | 적용 |
| Mesh Default | 적용 | 미적용 |
| Mesh Custom | 적용 | 적용 |
핵심 실측 결과
55/60/65/70 dB 호출어 각 5회, 총 KWS 80회와 WAV 180개를 분석했다.
| 비교 | KWS | STT 200~4000 Hz SBR | Kardome 처리 이득 | 1 kHz 톤 제거력 | 출력 노이즈 바닥 |
|---|---|---|---|---|---|
| Original Default | 19/20 | 23.03 dB | 기준 | 50.53 dB | -89.44 dBFS |
| Original Custom | 20/20 | 24.72 dB | Default 대비 +0.08 dB | 47.84 dB | -90.39 dBFS |
| Mesh Default | 20/20 | 25.13 dB | Original Default 대비 +2.23 dB | 49.70 dB | -89.87 dBFS |
| Mesh Custom | 18/20 | 23.22 dB | Mesh Default 대비 -1.75 dB | 40.01 dB | -86.49 dBFS |
해석:
Template A는 Original에서는 KWS 19/20 -> 20/20, STT SBR +1.69 dB로 유효했다.
동일 Template A를 Mesh에 적용하면 KWS 20/20 -> 18/20, STT SBR -1.91 dB가 됐다.
Mesh Custom은 Mesh Default보다 출력 노이즈가 +3.38 dB 높고,
1 kHz 정상음 제거력은 -9.69 dB 약해졌다.
70 dB에서는 VAD 구간 +256 ms, dropout 7.44%로 끝점/게이팅 불안정도 관찰됐다.
따라서 Mesh 음향 경로와 기존 Template A 묶음의 상호작용 문제다.
STT SBR은 실제 decoder WER/CER가 아니라 호출어 구간 파형의
200~4000 Hz 신호-배경 분리도 proxy다. KWS는 로그의 실제 검출 횟수다.
또한 데이터 폴더명이 1Hz이지만 실제 주 톤은 약 1000 Hz다. 따라서
현재 노이즈 결과는 정상 모터성 톤 proxy이며 실제 풍절음 결론으로 확대하지 않는다.
중요한 인과 한계가 있다. Custom은 EQ만 변경한 조건이 아니라 vol,
kws.sensitivity, pre_filter, eq_filter를 동시에 바꾼 Template A다.
따라서 현재 데이터로 확정할 수 있는 것은 “Mesh에서 Template A 전체가
악화했다”까지다. 열화량을 EQ 단독 원인으로 귀속하려면 아래 구성요소
분리 A/B가 필요하다.
현재 판정
제품 적용 기준점: Mesh Default
Template A on Mesh: No-Go
Template C: 재검증 전 보류
Template D: 현재 No-Go
Mesh에서 입력 Mic RMS는 Default 기준 Original보다 평균 약 0.12 dB만
낮았다. 반면 Kardome 처리 이득은 +2.23 dB였다. 즉 이번 샘플에서 Mesh의
주요 이득은 단순 Mic RMS 감쇠가 아니라 처리단의 신호/배경 분리 변화다.
Mesh Custom의 active speech RMS는 Mesh Default보다 평균 1.24 dB 낮으면서
노이즈 바닥은 오히려 높아졌으므로 vol=0.5 선적용으로 보상하면 안 된다.
Mesh 전용 재튜닝 순서
한 번에 한 property만 변경한다.
- 이번
Mesh Default의 실제 property 미설정/설정 상태를 B0로 고정한다. - Template A의 네 구성요소를 한 개씩 추가해 원인 기여도를 분리한다.
- EQ 단독 후보 B4가 원인으로 확인될 때만 한 밴드씩 작은 gain으로 시험한다.
- EQ 후보가 노이즈 Gate를 통과한 뒤에만
vol을 조정한다. - 실제 바람/모터 데이터로 HPF와 선택적 notch를 별도 검증한다.
- KWS sensitivity는 음향 전처리 확정 뒤 마지막에 조정한다.
1단계 구성요소 분리:
| 단계 | Mesh Default(B0) 대비 유일한 변경 | 주 판정 |
|---|---|---|
| B0 baseline | 변경 없음. 실제 미설정 property까지 동일 복제 | 전체 기준 |
| B1 vol | vol=0.4만 추가 |
active RMS, noise floor, headroom |
| B2 KWS | kws.sensitivity=3만 추가 |
KWS FRR/FAR |
| B3 HPF | pre_filter=5,120,0,0만 추가 |
저역/풍절, 55 dB STT |
| B4 EQ | 현재 eq_filter=0,1800,2,1;0,3000,1,1만 추가 |
STT SBR, 1 kHz 제거, dropout |
부팅 후 B0의 getprop와 SoundFlow 적용 로그를 저장한다. Default를
vol=0.4, sensitivity 3, HP2 120 Hz라고 추정해서는 안 된다. property가
미설정이면 해당 상태도 기준 조건의 일부다.
2단계 EQ 단독 후보:
| 단계 | eq_filter |
|---|---|
| E0 | OFF/B0 그대로 |
| E1 | 0,1800,0.5,1.2 |
| E2 | 0,1800,0.5,1.2;0,3000,0.25,1.2 |
| E3 vol sweep | E1/E2 합격 뒤 vol: Default -> 0.4 -> 0.425 -> 0.45 |
| E4 wind only | E1/E2 합격 뒤 HP2 120 -> 140 -> 150 Hz |
필터 parser는 strtof()를 사용하므로 소수 gain/Q를 받을 수 있다. 초기
총 부스트는 +0.75 dB 이하로 제한한다. 실제 제품 모터 톤이 1 kHz에
고정되어 재현될 때만 -0.5 dB, Q3 notch를 별도 후보로 시험한다.
광대역 STT 경로에 notch를 기본 적용하지 않는다.
후보 승격 Gate:
KWS: 각 레벨 30회 중 29회 이상, Mesh Default보다 하락 금지
STT proxy: 200~4000 Hz SBR 변화 -0.5 dB 이상
출력 노이즈 바닥: Mesh Default 대비 +1 dB 이하
1 kHz 제거력: Mesh Default 대비 손실 2 dB 이하
VAD 길이 변화: 50 ms 이하
dropout: 1% 이하
무발화/모터/풍절: 각 300초 false accept 증가 없음
headroom: 10 dBFS 이상
최종 STT: 동일 PCM 재생의 WER/CER가 Mesh Default보다 악화되지 않음
필수 부하 데이터는 Clean, 1 kHz 정상음, motor RPM/Fan PWM sweep, 실제 wind, broadband noise다.
설치 산출물
현재 패키지는 아래 네 파일을 같은 빌드 세트로 설치한다.
artifacts/vendor/bin/hw/vendor.quber.hardware.soundflowservice@1.0-service -> /vendor/bin/hw/
artifacts/vendor/bin/soundflowctl -> /vendor/bin/
artifacts/vendor/lib64/libKardome.so -> /vendor/lib64/
artifacts/vendor/etc/kardome_config.bin -> /vendor/etc/kardome_config.bin
1.1.18의 동적 의존성은 1.1.17과 동일해 다른 Kardome 의존 라이브러리는 교체하지 않는다. 서비스·libKardome.so·config는 분리하지 않는다.
Push 절차
cd /home/silogood/work/1.A1_SoC_new/SoC/a1_um_quber/output/sndflow_kardome_1.1.18_eq_gain_20260903
export ADB_SERIAL=<device-serial>
./scripts/install.sh
설치 스크립트는 artifact checksum 확인, 기존 파일 timestamp 백업, remount/push, 권한·SELinux label 복구, daemon 재시작, soundflowctl start를 통한 Core 초기화, 원격 checksum 및 버전 검증을 수행한다.
2026-09-03 실기기에서 네 파일의 원격 checksum, started=true, Kardome 1.1.18을 확인했다. 첫 F_G3 smoke에서는 EQ gain 외 AGC/pre-filter/EQ-filter가 result=-15여서 테스트 가능 상태가 아니었다.
1.1.18 규격에 맞게 zone별 AGC setter와 filter array의 float 원소 길이를 수정하고 재빌드·재설치했다. 또한 공급 config가 아니라 서비스에서 보내던 NRSE 1.1이 허용 범위를 벗어난 원인이어서 1.0으로 고쳤다. 이후 F_G0/G3/G6/G9의 AGC·pre-filter·EQ-filter·EQ total gain이 모두 result=0이고 Invalid value for ... 경고가 없음을 확인했다. 이 결과는 파라미터 전달 확인이며 WAV 기반 RMS 개선 판정은 아니다. 검증 뒤 보드는 MM118_DEFAULT 상태로 복귀했다.
설치 검증
adb -s "$ADB_SERIAL" shell getprop init.svc.soundflowservice
adb -s "$ADB_SERIAL" shell getprop sys.audio.sndflow.started
adb -s "$ADB_SERIAL" shell getprop sys.audio.sndflow.krdm.version
기대값:
init.svc.soundflowservice = running
sys.audio.sndflow.started = true
sys.audio.sndflow.krdm.version = 1.1.18
profile 적용 뒤에는 신규 parameter 성공 로그까지 확인한다.
adb -s "$ADB_SERIAL" logcat -d -b all | grep -E 'AGC_MAX_GAIN_ZONE|EQ_TOTAL_GAIN|applied filters|krdm Version|Invalid value'
예:
krdm Version = 1.1.18
persist.vendor.audio.sndflow.vol=0.400000 AGC_MAX_GAIN_ZONE=40 result=0
persist.vendor.audio.sndflow.krdm.eq_total_gain=3 EQ_TOTAL_GAIN result=0
persist.vendor.audio.sndflow.krdm.pre_filter applied filters=1 result=0
persist.vendor.audio.sndflow.krdm.eq_filter applied filters=2 result=0
튜닝 프로퍼티
주요 property:
persist.vendor.audio.sndflow.vol
persist.vendor.audio.sndflow.krdm.kws.sensitivity
persist.vendor.audio.sndflow.krdm.pre_filter
persist.vendor.audio.sndflow.krdm.eq_filter
persist.vendor.audio.sndflow.krdm.eq_total_gain
의미:
| Property | 목적 | 기본 테스트 방향 |
|---|---|---|
persist.vendor.audio.sndflow.vol |
Kardome AGC 최대 gain 구간 | Custom F의 0.4 고정. 추가 RMS 보정축으로 사용하지 않음 |
persist.vendor.audio.sndflow.krdm.kws.sensitivity |
호출어 검출 민감도 | 이번 파형 시험은 unset. KWS 전용 후속 시험에서 1.1.18 유효 범위를 별도 확인 |
persist.vendor.audio.sndflow.krdm.pre_filter |
저역 울림/진동/바닥 반사 억제 | HP2 100~150 Hz |
persist.vendor.audio.sndflow.krdm.eq_filter |
mesh로 줄어든 음성 명료도 보정 | 1800~3000 Hz 소폭 boost |
persist.vendor.audio.sndflow.krdm.eq_total_gain |
Kardome AFE 출력 global gain 후보 | Custom F 고정 후 0 → 3 → 6 격리 시험 |
먼저 패키지의 apply_profile.sh를 사용한다. 기기 정책상 adb shell setprop persist.vendor.audio.sndflow.*가 SELinux로 막히는 경우에만 아래 build.prop 방식을 사용한다.
avc: denied { set } for property=persist.vendor.audio.sndflow...
scontext=u:r:shell:s0
tcontext=u:object_r:vendor_audio_prop:s0
정상 보드에서는 스크립트가 set/get 검증과 Kardome result=0 로그 확인을 함께 수행하므로 스크립트 방식이 우선이다.
build.prop 적용 방식
adb -s ${ADB_SERIAL} root
adb -s ${ADB_SERIAL} wait-for-device
adb -s ${ADB_SERIAL} remount
adb -s ${ADB_SERIAL} pull /vendor/build.prop /tmp/vendor.build.prop
/tmp/vendor.build.prop 끝에 preset 값을 넣는다. 예:
# SoundFlow STT tuning
persist.vendor.audio.sndflow.vol=0.4
persist.vendor.audio.sndflow.krdm.pre_filter=5,150,0,0
persist.vendor.audio.sndflow.krdm.eq_filter=0,1800,2.5,1;0,2800,1.5,1
persist.vendor.audio.sndflow.krdm.eq_total_gain=3
반영:
adb -s ${ADB_SERIAL} push /tmp/vendor.build.prop /vendor/build.prop
adb -s ${ADB_SERIAL} shell chmod 644 /vendor/build.prop
adb -s ${ADB_SERIAL} shell restorecon /vendor/build.prop
adb -s ${ADB_SERIAL} reboot
부팅 후 확인:
adb -s ${ADB_SERIAL} wait-for-device
adb -s ${ADB_SERIAL} shell getprop persist.vendor.audio.sndflow.vol
adb -s ${ADB_SERIAL} shell getprop persist.vendor.audio.sndflow.krdm.kws.sensitivity
adb -s ${ADB_SERIAL} shell getprop persist.vendor.audio.sndflow.krdm.pre_filter
adb -s ${ADB_SERIAL} shell getprop persist.vendor.audio.sndflow.krdm.eq_filter
adb -s ${ADB_SERIAL} shell getprop persist.vendor.audio.sndflow.krdm.eq_total_gain
adb -s ${ADB_SERIAL} shell getprop sys.audio.sndflow.krdm.version
필터 포맷
필터 하나는 다음 4개 값으로 구성된다.
type,frequency_hz,gain_db,q
여러 필터는 세미콜론 ;으로 연결한다.
persist.vendor.audio.sndflow.krdm.eq_filter=0,1800,2,1;0,3000,1,1
필터 타입:
-1 FILTER_NONE
0 FILTER_BELL
1 FILTER_SHELF_LOW
2 FILTER_SHELF_HIGH
3 FILTER_NOTCH
4 FILTER_HP1
5 FILTER_HP2
6 FILTER_LP1
7 FILTER_LP2
STT 추천 템플릿
STT에는 단순 감도 증가보다 안정적인 SNR, 저역 노이즈 억제, 자음 명료도 확보가 중요하다.
Template M1: Mesh Mild Clarity (다음 시험 권장)
2026-07-29 결과를 기준으로 다음 Mesh 시험에 권장하는 단일 후보값이다.
제품 배포 preset이 아니라 eq_filter 단독 효과를 확인하기 위한
field-test template이다.
적용 전 이번 Mesh Default의 image, vendor build.prop, Kardome library와
property 상태를 그대로 B0로 복제한다. 그 뒤 아래 한 줄만 추가한다.
persist.vendor.audio.sndflow.krdm.eq_filter=0,1800,0.5,1.2
vol, kws.sensitivity, pre_filter는 B0와 동일하게 유지한다. B0에서
미설정이었다면 M1에서도 미설정 상태로 둔다. Template A의 네 줄을 남긴
상태에서 M1을 덧붙이면 안 된다.
M1 변경 의도:
1.8 kHz boost: 기존 +2.0 dB -> +0.5 dB
3 kHz boost: 기존 +1.0 dB -> 제거
Q: 기존 1.0 -> 1.2
변경 변수: eq_filter 하나
시험 파일:
M1이 KWS, WER/CER, 출력 floor, 1 kHz 제거, VAD/dropout Gate를 모두
통과한 뒤에만 3 kHz +0.25 dB, Q1.2를 M2로 추가 시험한다.
Template A: STT Friendly (Original 검증, Mesh No-Go)
Mesh가 없는 Original에서는 유효한 시작값이다. 2026-07-29 실측에서 동일 설정을 Mesh에 적용한 결과 KWS/STT/정상음 억제가 모두 악화되었으므로 Mesh 제품의 시작값으로 사용하지 않는다.
persist.vendor.audio.sndflow.vol=0.4
persist.vendor.audio.sndflow.krdm.kws.sensitivity=3
persist.vendor.audio.sndflow.krdm.pre_filter=5,120,0,0
persist.vendor.audio.sndflow.krdm.eq_filter=0,1800,2,1;0,3000,1,1
의도:
vol=0.4
-> mesh/낮은 높이로 줄어든 RMS를 약하게 보정
pre_filter=5,120,0,0
-> 120 Hz 아래 저역 진동과 바닥 울림 제거
eq_filter=0,1800,2,1
-> 말소리 명료도 대역 보강
eq_filter=0,3000,1,1
-> 자음 선명도 소폭 보강
Template B: STT Low-Noise
저역 울림, 모터음, 바닥 반사음이 STT를 흔드는 경우.
persist.vendor.audio.sndflow.vol=0.4
persist.vendor.audio.sndflow.krdm.kws.sensitivity=3
persist.vendor.audio.sndflow.krdm.pre_filter=5,150,0,0
persist.vendor.audio.sndflow.krdm.eq_filter=0,1800,2,1;0,2800,1,1
판정:
저역 노이즈가 줄고 STT가 안정되면 유지한다.
음성이 얇아지거나 먼 거리 인식이 나빠지면 pre_filter cutoff를 120 Hz로 낮춘다.
Template C: Mesh / Low-Height RMS Recovery (재검증 전 보류)
초기 가설용 프리셋이다. 2026-07-29 데이터에서 vol=0.4의 Template A도
Mesh Default보다 나빠졌으므로 vol=0.5를 더한 이 프리셋은 재검증 전
제품 적용을 보류한다.
persist.vendor.audio.sndflow.vol=0.5
persist.vendor.audio.sndflow.krdm.kws.sensitivity=3
persist.vendor.audio.sndflow.krdm.pre_filter=5,120,0,0
persist.vendor.audio.sndflow.krdm.eq_filter=0,1800,2,1;0,3000,1,1
판정:
Template A보다 호출어/STT 반응이 좋아지는지 확인한다.
오검출이나 소음 반응이 늘면 vol을 0.45 또는 0.4로 낮춘다.
소음 환경에서 VAD/SAE가 과도하게 발생하면 No-Go로 기록한다.
Template D: Heavy Mesh Attenuation (현재 No-Go)
이전 강한 후보값이다. Template A보다 EQ와 sensitivity가 더 공격적이므로 현재 실측 근거에서는 사용하지 않는다.
persist.vendor.audio.sndflow.vol=0.5
persist.vendor.audio.sndflow.krdm.kws.sensitivity=4
persist.vendor.audio.sndflow.krdm.pre_filter=5,120,0,0
persist.vendor.audio.sndflow.krdm.eq_filter=0,1800,3,1;0,3000,2,1
주의:
첫 번째 적용값으로 쓰지 않는다.
Template A 또는 C에서 반응이 부족할 때만 테스트한다.
오검출, 치찰음, 거친 음색이 늘면 No-Go로 기록한다.
테스트 절차
각 template마다 동일 조건으로 테스트한다.
거리: 0.5 m, 1.0 m, 2.0 m
방향: 정면 0도, 좌/우 45도
반복: 조건별 호출어 10회
무발화: 60초
생활소음/제품동작소음: 60초
기록 항목:
Mesh version:
제품 높이:
거리/방향:
Template:
vol:
kws.sensitivity:
pre_filter:
eq_filter:
호출어 성공 횟수:
미검출 횟수:
오검출 횟수:
VAD/SAE 이벤트:
STT 주관 품질:
저역 울림:
고역 거칠음:
판정:
로그 저장:
adb -s ${ADB_SERIAL} logcat -d -b all > soundflow_tuning_log.txt
adb -s ${ADB_SERIAL} shell getprop > getprop_after_tuning.txt
판정 기준
Go 후보:
호출어 성공률이 baseline보다 개선된다.
STT 문장 누락이 줄어든다.
무발화 오검출이 증가하지 않는다.
생활 소음에서 VAD/SAE가 과도하게 발생하지 않는다.
음성이 지나치게 얇거나 거칠게 변하지 않는다.
Kardome invalid value 경고가 없다.
No-Go 후보:
호출어 성공률은 좋아졌지만 오검출이 증가한다.
저역은 줄었지만 음성이 얇아져 먼 거리 인식이 나빠진다.
명료도 EQ 후 고역이 거칠고 피로하게 들린다.
서비스가 restarting 상태가 된다.
Kardome parameter invalid warning이 반복된다.
빠른 판단표
Mesh에서 호출어/STT 반응이 둔함
-> Mesh Default와 동일 PCM A/B로 먼저 재현
-> EQ OFF -> 1800 Hz +0.5 dB 단일 밴드
-> 노이즈 Gate 통과 후 vol 0.4 -> 0.425 -> 0.45
-> 전처리 확정 뒤에만 kws.sensitivity +1 별도 시험
Original에서 호출어/STT 반응이 둔함
-> Template A를 기준 후보로 사용
오검출이 늘어남
-> kws.sensitivity -1
-> vol -0.1
-> 2~4 kHz EQ gain 낮춤
저역 울림이 큼
-> pre_filter HP2 cutoff 100 -> 120 -> 150 -> 180
음성이 얇음
-> pre_filter HP2 cutoff 낮춤
-> 1.5~2 kHz EQ만 약하게 유지
고역이 거침
-> 3 kHz gain 낮춤
-> 필요 시 3.5 kHz notch -1~-2 dB