Attualmente sto cercando di ottenere un canale audio il più pulito possibile tramite webrtc. Via i mediaconstraints getUserMedia oggetto, ho impostato le seguenti opzioni:WebRTC - disabilita tutta l'elaborazione audio
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
},
Questo migliora notevolmente la qualità audio, ma ci sembra ancora essere presenti elaborazione audio, che fa sì che la mutilazione del audio sotto forma di alta frequenza rumore con alcuni dei campioni di prova.
C'è una bandiera di Chrome --use-file-for-fake-audio-capture
come descritto a http://peter.sh/experiments/chromium-command-line-switches/#use-file-for-fake-audio-capture che consente l'input tramite file per il test. Come menzionato nella descrizione del flag, tutta l'elaborazione audio deve essere disabilitata o l'audio risulterà distorto - quindi sembra che ci siano opzioni aggiuntive per questo scopo.
Ho anche provato i flag di Chrome --disable-audio-track-processing --audio-buffer-size=16 --enable-exclusive-audio
, ma ancora sembra esserci qualche elaborazione audio.
C'è un modo per disabilitare l'elaborazione audio ancora presente (preferibilmente tramite API JS)?
Ciò avviene localmente o in una connessione peer? Potrebbe accadere che Chrome stia cambiando il bitrate in modo dinamico per Opus (questo sarà solo il caso se lo stai notando in una connessione). –
Su una connessione peer. Penso che sia una sorta di ottimizzazione dell'audio della voce. Gioca sempre con dopo x quantità di tempo durante la riproduzione di un campione. – wowpatrick
L'ho letto in modo da poter dire con certezza che il bitrate è regolato in base alla larghezza di banda disponibile. – Robert