← Docs hub

SoundFlow Mesh 튜닝 분석 및 실행 계획

현재 결정: 제품 기준점은 Mesh Default로 유지한다. 이번 Mesh Custom에 적용한 Template A는 제품 후보에서 제외하고, 다음 시험에서는 작은 volume 복원과 두 개의 완화 BELL을 묶은 MBR1 · Mesh Balanced Recovery를 검증한다.

SoundFlow Mesh 튜닝 4개 장 요약

4개 장 요약 SVG · 입력 레벨별 성능 추이 SVG · MBR1 property · MBR1 시험 계획

이 문서는 다음 자료를 함께 사용했다.

두 PDF는 내부 참고자료이므로 원본 파일은 공개 Wiki에 첨부하지 않고, 설계 판단에 필요한 정의와 범위만 요약했다.

1. 튜닝 파라미터 목록과 근거 이유

1.1 이번 시험에서 변경한 Template A

Custom 조건에는 아래 네 property를 동시에 적용했다.

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

이 조건은 EQ만 바꾼 시험이 아니라 출력 volume, KWS 감도, 입력 pre-filter, 출력 EQ를 함께 바꾼 4-property 묶음 시험이다.

1.2 파라미터 해석과 MBR1 변경값

파라미터 Template A 적용값 다음 MBR1 값 변경 여부 근거와 검증 지표
sndflow.vol 0.4 0.35 변경 서비스 기본 0.30과 Template A 0.40의 중간값이다. 55 dB 반응만 소폭 복원하고 70 dB headroom 위험을 제한한다.
kws.sensitivity 3 B0의 실제 Default/미설정 유지 변경 안 함 KWS 임계값으로 FRR/FAR에는 영향을 주지만 STT 음질이나 noise reduction 문제를 직접 해결하지 않는다. B2에서 단독 검증한다.
pre_filter 5,120,0,0 B0의 실제 Default/미설정 유지 변경 안 함 5=FILTER_HP2, cutoff 120 Hz, gain 무시, Q≤0이면 기본 Butterworth Q다. 입력 전처리이므로 실제 wind 자료 없이 먼저 바꾸지 않는다. B3에서 단독 검증한다.
eq_filter 0,1800,2,1;0,3000,1,1 0,1800,0.75,1.4;0,3000,0.35,1.8 변경 두 개의 넓고 강한 BELL을 낮고 좁은 BELL 두 개로 완화한다. KWS, SBR, 1 kHz 제거력, 출력 floor, VAD/dropout으로 판정한다.

서비스 코드는 sndflow.vol이 미설정이면 AGC_MAX_GAIN_ZONE=0.3을 적용한다. kws.sensitivitypre_filter는 MBR1에서 강제 설정하지 않고 B0의 미설정 상태까지 그대로 유지한다. 적용 전 getprop과 SoundFlow 로그로 B0 상태를 저장해야 한다.

1.3 EQ 배열 해석

두 PDF가 설명하는 필터 직렬화 형식은 다음과 같다.

type, center_frequency_hz, gain_db, q

BELL이란?

BELL지정한 중심 주파수 주변만 산 모양으로 올리거나 내리는 필터다. 벨 또는 피킹 EQ라고도 부른다. 전체 주파수나 전체 음량을 동일하게 올리는 volume과는 다르다.

                 gain(+)
                    ▲
                    │       중심 주파수
                    │          /\
원래 응답 ──────────┼─────────/  \─────────
                    │       주변 대역만 변화
                    └──────────────────────▶ 주파수

예를 들어 0,1800,2,1은 1.8 kHz 한 점만 2 dB 올리는 것이 아니라, 1.8 kHz를 최고점으로 주변 음성 대역까지 넓게 올린다. Template A의 Q=1 BELL 두 개가 1.8 kHz와 3 kHz에서 겹치면 예상보다 넓은 중고역이 강조될 수 있다.

MBR1은 1.8 kHz BELL을 +2/Q1→+0.75/Q1.4, 3 kHz BELL을 +1/Q1→+0.35/Q1.8로 낮추고 좁힌다. 두 BELL을 유지해 단일 필터보다 적극적으로 명료도 대역을 복원하되 Template A의 광대역 강조는 피한다.

이번 값은 다음 의미다.

직렬화 값 해석
0,1800,2,1 FILTER_BELL, 1.8 kHz 중심, 주변 대역 +2 dB, Q=1(넓음)
0,3000,1,1 FILTER_BELL, 3 kHz 중심, 주변 대역 +1 dB, Q=1(넓음)
0,1800,0.5,1.2 FILTER_BELL, 1.8 kHz 중심, 주변 대역 +0.5 dB, Q=1.2(상대적으로 좁음)
0,1800,0.75,1.4 MBR1 1.8 kHz BELL, 주변 대역 +0.75 dB, Q=1.4
0,3000,0.35,1.8 MBR1 3 kHz BELL, 주변 대역 +0.35 dB, Q=1.8

PDF 근거에 따르면:

16 kHz 표준 peaking-EQ biquad로 계산한 합성 응답의 예상 최대 boost는 Template A 약 2.42 dB, MBR1 약 0.81 dB다. 1 kHz 예상 boost도 약 0.83→0.18 dB로 줄어 기존 tone 제거력 열화 위험을 낮춘다. 실제 Kardome 응답은 다음 WAV에서 다시 측정한다.

1.4 필터 타입 번호

필터 용도
-1 FILTER_NONE 필터 없음
0 FILTER_BELL 중심 주파수 주변만 산 모양으로 boost/cut하는 벨/피킹 EQ
1 FILTER_SHELF_LOW 기준점 아래 전체 조정
2 FILTER_SHELF_HIGH 기준점 위 전체 조정
3 FILTER_NOTCH 특정 협대역 톤 제거
4 / 5 FILTER_HP1 / FILTER_HP2 저역 제거, 6/12 dB per octave
6 / 7 FILTER_LP1 / FILTER_LP2 고역 제거, 6/12 dB per octave

2. 현재 성능 및 테스트 현황

2.1 시험 범위

항목 현재 상태
비교 조건 Original Default / Original Custom / Mesh Default / Mesh Custom
입력 레벨 55 / 60 / 65 / 70 dB
분석 파일 16 kHz WAV 180개
KWS 총 80회, 조건·레벨별 5회
STT 200–4,000 Hz 음성/배경 분리도(SBR) 파형 분석
노이즈 폴더명 1Hz, 실측 주성분 약 1 kHz의 stationary tone proxy

2.2 4조건 정량 결과

조건 KWS SBR 처리 이득 Mic noise RMS 출력 noise floor 1 kHz 제거력
Original Default 19/20 23.03 dB 3.37 dB -61.03 dBFS -89.44 dBFS 50.53 dB
Original Custom 20/20 24.72 dB 3.45 dB -61.57 dBFS -90.39 dBFS 47.84 dB
Mesh Default 20/20 25.13 dB 5.60 dB -62.80 dBFS -89.87 dBFS 49.70 dB
Mesh Custom 18/20 23.22 dB 3.85 dB -60.68 dBFS -86.49 dBFS 40.01 dB

Mic noise RMS출력 noise floor는 낮을수록 조용하다. SBR, 처리 이득, 1 kHz 제거력은 높을수록 좋다.

입력 레벨별 KWS STT 노이즈 성능 추이

2.3 완료·미완료 현황

시험 상태 현재 근거 남은 항목
4조건 KWS 완료, 표본 작음 80회 실제 로그 검출 레벨·후보별 30회로 확대
STT 파형 품질 완료 SBR, active RMS, VAD, dropout 동일 PCM decoder WER/CER
Mesh 물리 효과 1차 완료 Default에서 Mic noise -1.78 dB, SBR +2.11 dB 반복 수집과 mesh 개체 편차
1 kHz 톤 1차 완료 Mesh Custom 제거력 -9.69 dB 실제 motor RPM sweep
실제 motor/fan/wind 미완료 현재 자료로 확정 불가 조건별 300초와 false accept
Template A 구성요소 분리 미완료 네 property 동시 변경 B1–B4 단일 변수 A/B
MBR1 미실행 다중 파라미터 시험 설계 완료 ABBA KWS/STT/noise 실행

2.4 SBR 읽는 법

SBR은 Signal-to-Background Ratio, 즉 배경 대비 음성 에너지의 분리 정도다.

SBR(dB) = 10 × log10(발화 구간 에너지 / 배경 구간 에너지)

3. 테스트 결과에 따른 시사점

3.1 Mesh 자체는 유효하다

Default끼리 비교하면 Original→Mesh에서 KWS는 19/20→20/20, 평균 SBR은 +2.11 dB, 처리 이득은 +2.23 dB, Mic noise RMS는 1.78 dB 조용해졌다. 현재 데이터에서 제품 기준점은 Mesh Default다.

다만 55 dB에서는 Mesh Default SBR이 Original Default보다 1.94 dB 낮고 dropout 4.89%가 관찰됐다. 저레벨·원거리 조건은 별도 보완 대상이다.

3.2 Template A 묶음은 Mesh에서 적용 제외다

Mesh Default → Mesh Custom 변화 판정
KWS 20/20 → 18/20 55·65 dB에서 각 1회 누락
평균 SBR -1.91 dB 음성/배경 분리 악화
처리 이득 -1.75 dB STT 입력 품질 악화
출력 noise floor +3.38 dB 잔류 노이즈 증가
1 kHz 제거력 -9.69 dB 모터성 톤 proxy 억제 약화
70 dB VAD/dropout +256 ms / 7.44% 끝점·게이팅 불안정 징후

따라서 Template A를 Mesh 제품 preset으로 승격하지 않는다.

3.3 EQ 단독 열화로 표현하면 안 된다

Template A는 네 property가 동시에 바뀌었다. PDF의 신호 경로 설명까지 반영하면 원인 후보는 다음처럼 나뉜다.

원인 후보 신호 경로 확인 방법
vol=0.4 전체 출력 gain B1 단독 A/B에서 RMS·floor·headroom 확인
kws.sensitivity=3 KWS 판정 임계값 B2에서 FRR/FAR만 분리
HP2 120 Hz global 입력 pre-filter B3에서 55 dB STT와 실제 wind 확인
두 BELL(벨/피킹) EQ 코어 처리 후 zone 출력 B4/MBR1에서 출력 SBR·톤·floor 확인
property 간 상호작용 복합 B1–B4와 Template A 결과 비교

출력 EQ가 코어 처리 후 적용된다는 PDF 설명상, 현재 결과만으로 “EQ가 upstream source separation 알고리즘 자체를 악화시켰다”고 결론 내릴 수 없다. 더 정확한 표현은 Template A 묶음이 최종 KWS/STT 입력과 출력 노이즈 결과를 악화시켰다이다.

3.4 노이즈 결론의 범위

현재 노이즈 파일의 실측 주성분은 약 1 kHz다. 일정한 모터성 톤의 proxy로는 사용할 수 있지만, 저주파 난류가 중심인 실제 wind나 RPM/PWM이 변하는 motor/fan 결과로 일반화할 수 없다.

Mesh Default에서 <80 Hz80–200 Hz 억제가 각각 약 1.01 dB, 0.69 dB 개선되는 방향이었지만 실제 wind 검증 전에는 HP2 cutoff를 150/180 Hz로 올리지 않는다. 높은 cutoff가 55 dB 원거리 음성의 저역 정보를 더 줄일 수 있기 때문이다.

4. 다음 계획 및 일정

일정은 장비 1대와 고정 음향 셋업 1식을 기준으로 한 실행안이다.

날짜 단계 실행 내용 산출물 / 판정
2026-07-30 B0 기준 고정 Mesh Default image·Kardome library·전체 property·SPL·PCM 고정 B0 manifest, getprop, 적용 로그
2026-07-31 B1–B4 원인 분리 vol / sensitivity / HP2 / 기존 EQ를 하나씩만 적용 property별 영향표, 조기 중단 판정
2026-08-03 MBR1 ABBA B0→MBR1→MBR1→B0, 55·70 dB 빠른 선별 후 전 레벨 확장 KWS FRR, SBR, VAD/dropout
2026-08-04 실부하 노이즈 motor RPM, fan PWM, wind 1/3/5 m/s, pink noise를 각 300초 noise floor, false accept, 톤/대역 분석
2026-08-05 통합 Gate decoder WER/CER와 파형·KWS·노이즈 결과 통합 MBR1 적용/탈락 결정
2026-08-06 조건부 원인 분리 MBR1 탈락 시 vol-only와 EQ-only로 분리 실패 원인 확정 또는 시험 종료
2026-08-07 결과 확정 최종 property와 회귀 결과 정리 제품 후보안과 Wiki 갱신

4.1 다음 시험값: MBR1

# Mesh Balanced Recovery · 시험 후보, 제품 preset 아님
persist.vendor.audio.sndflow.vol=0.35
persist.vendor.audio.sndflow.krdm.eq_filter=0,1800,0.75,1.4;0,3000,0.35,1.8

MBR1에서는 다음 두 property를 Template A 값으로 강제 설정하지 않는다.

persist.vendor.audio.sndflow.krdm.kws.sensitivity  # B0 그대로
persist.vendor.audio.sndflow.krdm.pre_filter       # B0 그대로

이전 Template A 네 줄을 남긴 상태에서 MBR1을 추가하면 안 된다. MBR1은 volume과 EQ를 함께 바꾸는 최적화 bundle이므로 B0와 직접 ABBA 비교한다. 원인 확인이 필요하면 아래 M1/단일 변수 시험으로 되돌아간다.

4.2 원인 분리 시험

단계 B0 대비 변경 주 판정
B1 vol=0.4 active RMS, output floor, headroom
B2 kws.sensitivity=3 KWS FRR/FAR
B3 pre_filter=5,120,0,0 실제 wind, 저역, 55 dB STT
B4 eq_filter=0,1800,2,1;0,3000,1,1 SBR, 1 kHz 제거, dropout
M1 eq_filter=0,1800,0.5,1.2 완화 EQ의 독립 효과
MBR1 vol=0.35 + 완화 BELL 두 개 다음 시험의 주 최적화 bundle

4.3 승격 Gate

항목 합격 기준
KWS 55/60/65/70 dB 각 29/30 이상, B0보다 하락 금지
최종 STT 동일 PCM decoder WER/CER가 B0보다 악화되지 않음
STT 파형 proxy 200–4,000 Hz SBR 변화가 B0 대비 -0.5 dB 이상
출력 noise floor B0 대비 증가 +1 dB 이하
1 kHz 제거력 B0 대비 손실 2 dB 이하
VAD / dropout 활성 구간 변화 50 ms 이하 / dropout 1% 이하
False accept 무음·motor·fan·wind 각 300초에서 B0 대비 증가 없음
Headroom 10 dBFS 이상

4.4 시험 파일

MBR1이 탈락하면 gain을 더 올리지 않는다. vol=0.35와 두 BELL 중 어느 쪽이 원인인지 vol-only와 EQ-only로 분리한다. M1은 이때 EQ 단독의 최소 개입 진단값으로 사용한다.

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