perf: stream propagation working sets
This commit is contained in:
+18
-7
@@ -84,24 +84,29 @@ Scene JSON의 사용자 설정 예는 다음과 같다.
|
||||
|
||||
## 라이브 창의 전파 지연과 이동 근사
|
||||
|
||||
라이브 frame의 출력 sample 구간을 `[S, E)`, 현재 quasi-static geometry에서 모든
|
||||
source–microphone 희소 경로의 최대 지연을 `Dmax`라 하자. 합성기는 다음 순서로 frame을 만든다.
|
||||
라이브 frame의 출력 sample 구간을 `[S, E)`, 현재 quasi-static geometry에서 sampled
|
||||
source–microphone 희소 경로의 최대 지연을 `Dsampled`라 하자. 전체 경로 최대 `Dall`은
|
||||
tone tail의 도착 가능성 판정과 metadata에 별도로 보존한다. 합성기는 다음 순서로 frame을 만든다.
|
||||
|
||||
1. source trajectory를 출력 창 중앙 시각에서 한 번 샘플링한다.
|
||||
2. `R = max(0, S - ceil(Dmax × sampleRate))`부터 `E`까지의 tone, noise와 asset 방사 신호를
|
||||
원래 Scene 절대 sample index로 생성한다.
|
||||
3. 이 pre-roll buffer에 direct, reflection, scattering, diffraction과 diffuse 경로를 적용한다.
|
||||
4. 전파가 끝난 뒤 `[S, E)`만 crop하여 localizer에 넘긴다.
|
||||
2. `R = max(0, S - ceil(Dsampled × sampleRate))`를 sampled 방사 입력의 시작으로 정한다.
|
||||
3. analytic tone은 `[S, E)` 크기의 마이크 channel에 원래 Scene의 절대 sample 위상으로 직접
|
||||
경로를 더한다. tone에는 과거 sample buffer가 필요 없다.
|
||||
4. noise와 asset은 `[R, E)` 방사 buffer와 source별 최대 지연의 zero-padded FFT를 만들고,
|
||||
direct·reflection·scattering·diffraction·diffuse 전달함수를 적용한 IFFT의 `[S, E)` 부분만
|
||||
crop 크기 마이크 channel에 더한다.
|
||||
|
||||
따라서 source가 `S` 전에 멈췄더라도 그 직접음·반사음·diffuse tail이 창 안에 도착하면 보존된다.
|
||||
analytic tone뿐 아니라 deterministic noise index와 asset 재생 위치도 원래 절대 시간축을 유지한다.
|
||||
`synthesis.windowing`과 live frame의 `signalStats.windowing`은 render/output sample, pre-roll,
|
||||
최대 지연, geometry와 Doppler 정책을 기록한다.
|
||||
전체/실제 render 최대 지연, geometry와 Doppler 정책을 기록한다.
|
||||
source별 `sourceArrivals`는 각 midpoint path의 half-open 도착 sample 구간이 출력과 겹치는지와
|
||||
겹친 path kind를 기록한다. live ground-truth 평가는 emission midpoint가 아니라
|
||||
`arrivingSourceIds`를 사용하므로, 이미 멈춘 source의 tail을 false positive로 잘못 세지 않는다.
|
||||
이 ID 집합은 위치 추정이 끝난 뒤 평가에만 쓰며 raw channel, STFT, steering이나 peak 검출에는
|
||||
입력하지 않는다.
|
||||
loop하지 않는 asset의 emission end는 선언 duration과 decoded channel duration 중 작은 값이다.
|
||||
leading/trailing zero sample 내용은 검사하지 않는다.
|
||||
|
||||
다만 이는 moving wave equation 해법이 아니다. pre-roll 방사 시각의 retarded source 위치를 다시
|
||||
구하지 않고 전체 render buffer에서 창 중앙 위치와 그 위치의 경로를 고정한다. 창 안의 연속 이동,
|
||||
@@ -114,6 +119,12 @@ pre-roll은 현재 희소 **전파 경로**의 최대 지연을 보존하지만,
|
||||
`mix.normalization: peak`이면 live 합성은 각 출력 crop의 peak로 scale을 계산하므로 frame 간
|
||||
절대 진폭 비교에는 `normalization: none`을 사용해야 한다.
|
||||
|
||||
마이크 출력은 처음부터 `[S,E)` 크기로만 할당하고 sampled source buffer·spectrum은 source
|
||||
하나씩 처리한다. source별 경로 최대 지연을 `D_i`라 하면 unrelated far tone의 global
|
||||
`Dmax`가 noise·asset FFT를 키우지 않는다. Experiment 검증과 runtime은 같은 estimator를 사용해
|
||||
shoebox의 모든 실제 sparse path 지연을 포함한다. 현재 sampled source는 source–microphone
|
||||
조합마다 IFFT 한 번을 수행하므로, source batching으로 IFFT 수를 줄이는 작업은 남아 있다.
|
||||
|
||||
## Camera 환경 preset과 비용
|
||||
|
||||
Camera의 **고급 설정 → 음향 환경**은 현재 geometry 전체가 들어가도록 room을 자동 추론하고 다음
|
||||
|
||||
@@ -217,7 +217,9 @@ Acoustic Camera에서 Experiment를 가져올 때는 문서 자체를 먼저 검
|
||||
- 마이크 주파수 응답점의 범위·정렬과 shoebox room/occluder 포함 관계
|
||||
- map shape와 source peak 매칭
|
||||
- band별 evaluation 파라미터와 허용 metric
|
||||
- Snapshot channel·최대 sparse delay FFT working set의 512 MiB 예산
|
||||
- crop 크기 microphone channel과 한 sampled source의 자체 최대 sparse-delay
|
||||
samples·spectrum·workspace를 합친 typed working set의 512 MiB 예산. validator와 runtime은
|
||||
reflection·scattering·diffraction·diffuse를 포함한 동일 estimator를 사용한다.
|
||||
|
||||
지원하지 않는 schemaVersion은 묵시적으로 변환하지 않고 오류로 알린다.
|
||||
|
||||
|
||||
@@ -218,7 +218,8 @@ hardware deadline과 정확도는 장치 adapter가 정해진 뒤 별도 측정
|
||||
|
||||
- WebGPU 미지원/장치 한도: 시작 시 capability를 표시하고 CPU fallback 및 grid 상한을 둔다.
|
||||
- 좌표·phase 부호 오류: analytic tone test와 배열 대칭성 test를 먼저 만든다.
|
||||
- 브라우저 메모리: snapshot signal·최대 sparse delay FFT에 512 MiB 한도를 적용하고, 이동
|
||||
- 브라우저 메모리: crop microphone channel과 source별로 순차 처리하는 한 sampled
|
||||
signal·spectrum·workspace의 peak typed working set에 512 MiB 한도를 적용하고, 이동
|
||||
미리보기는 최대 48개·2,500 points의 짧은 시간창으로 제한한다. 장시간 입력은 256 MiB 기본
|
||||
한도의 fixed ring streaming core에서 처리하고 overload의 `droppedSamples`를 감시한다.
|
||||
- 데이터셋 부적합/라이선스: 로컬 asset 계약을 유지하고 synthetic fixture를 기본 test 입력으로
|
||||
|
||||
Reference in New Issue
Block a user