← Docs hub

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가 개선됐다고 말할 수 없다.

튜닝 원칙:

  1. Mini Original의 현재 property 상태를 B0로 고정한다.
  2. A 필터 단독 → A + gain/vol 단계 보상으로 필터와 증폭을 분리한다.
  3. gain은 전체 RMS만 올리는 것이 아니라 speech-active RMS/SBR 회복을 목표로 하고 floor/headroom을 동시에 Gate로 둔다.
  4. KWS sensitivity는 음향 전처리와 gain 확정 뒤 마지막에 조정한다.
  5. 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 적용 적용

Mesh EQ KWS STT 정밀분석

Mesh EQ 재튜닝 권고

핵심 실측 결과

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만 변경한다.

  1. 이번 Mesh Default의 실제 property 미설정/설정 상태를 B0로 고정한다.
  2. Template A의 네 구성요소를 한 개씩 추가해 원인 기여도를 분리한다.
  3. EQ 단독 후보 B4가 원인으로 확인될 때만 한 밴드씩 작은 gain으로 시험한다.
  4. EQ 후보가 노이즈 Gate를 통과한 뒤에만 vol을 조정한다.
  5. 실제 바람/모터 데이터로 HPF와 선택적 notch를 별도 검증한다.
  6. 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

Keyboard shortcuts

⌘K / Ctrl+KOpen command palette
/Focus search
g hGo to home
g pGo to projects
g sGo to sessions
j / kNext / prev row (tables)
?Show this help
EscClose dialogs

Structured queries

Mix key:value filters with free text in the palette:

type:sessionOnly session pages
project:llm-wikiFilter by project name (substring)
model:claudeFilter by model name (substring)
date:>2026-03-01Sessions after a date
date:<2026-04-01Sessions before a date
tags:rustPages mentioning a tag/topic
sort:dateSort results by date (newest first)

Example: type:session project:llm-wiki date:>2026-04 sort:date