Obecnie próbuję uzyskać czysty kanał audio, jak to możliwe za pośrednictwem Webrtc. Poprzez mediaconstraints getUserMedia obiekt, mam ustawić następujące opcje:WebRTC - wyłącz wszystkie przetwarzanie dźwięku
constraints: {
audio: {
mandatory: {
echoCancellation: false,
googEchoCancellation: false,
googAutoGainControl: false,
googAutoGainControl2: false,
googNoiseSuppression: false,
googHighpassFilter: false,
googTypingNoiseDetection: false,
//googAudioMirroring: false // For some reason setting googAudioMirroring causes a navigator.getUserMedia error: NavigatorUserMediaError
}
},
video: false
},
To znacznie poprawia jakość dźwięku, ale nie wydaje się być nadal obecne przetwarzanie dźwięku, co powoduje okaleczenia audio w postaci wysokiej częstotliwości hałas z niektórymi badanymi próbkami.
Istnieje flaga Chrome --use-file-for-fake-audio-capture
zgodnie z opisem pod numerem http://peter.sh/experiments/chromium-command-line-switches/#use-file-for-fake-audio-capture, która umożliwia wprowadzanie za pośrednictwem pliku do testowania. Jak wspomniano w opisie flagi, wszystkie przetwarzanie dźwięku musi być wyłączone lub dźwięk zostanie zniekształcony - wydaje się, że istnieją dodatkowe opcje do tego celu.
Próbowałem także flag Chrome z --disable-audio-track-processing --audio-buffer-size=16 --enable-exclusive-audio
, ale nadal wydaje się, że przetwarzanie dźwięku.
Czy istnieje sposób na wyłączenie wciąż aktualnego przetwarzania dźwięku (najlepiej za pomocą interfejsu JS API)?
Czy dzieje się to lokalnie lub w połączeniu równorzędnym? Może się tak zdarzyć, że Chrome zmienia dynamicznie szybkość transmisji dla Opus (tak będzie tylko w przypadku, gdy zauważysz to w połączeniu). –
Przez połączenie równorzędne. Myślę, że to jakaś optymalizacja dźwięku głosu. Zawsze włącza się po x czasie odtwarzania próbki. – wowpatrick
Przeczytałem to, aby móc powiedzieć, że przepływność jest dostosowywana zgodnie z dostępnym pasmem. – Robert