Почему подавитель Android -шума фиксирует больше фонового шума и как справиться с этим?Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Почему подавитель Android -шума фиксирует больше фонового шума и как справиться с этим?

Сообщение Anonymous »

Я работаю над проектом, где мне нужно записывать речевой аудио и выполнять обработку над ним. Я использую API супрессора шума для снижения фонового шума, но я заметил, что поведение этого API значительно различается в разных устройствах. < /P>
Например, я записал аудио в течение 10 секунд. В этом сценарии я смоделировал источник фонового шума, расположенный на расстоянии 1-2 метра, в то время как фактическая речь происходит только в течение 1-2 секунд во время записи. < /P>
Здесь я заметил значительные вариации в Эффективность подавления шума на разных устройствах: < /p>
  • На некоторых устройствах фоновый шум почти полностью подавлен. (Например, Redmi Note 5 Pro, Samsung S21 Fe) < /p>
    < /li>
    На других устройствах фоновый шум остается заметным в течение 10 секунд. (например, Redmi 10, Vivo S1)
    Я не могу определить основу, на которой это поведение отличается, как Старые устройства/версии Android , кажется, обрабатывают шум подавление лучше, чем новые устройства .
    record = new AudioRecord(MediaRecorder.AudioSource.VOICE_COMMUNICATION,
    SAMPLE_RATE, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, bufferSize);

    enableNoiseSuppressor();
    enableEchoCanceller();
    < /code>
    public void enableNoiseSuppressor() {
    if (NoiseSuppressor.isAvailable()) {
    noiseSuppressor = NoiseSuppressor.create(record.getAudioSessionId());
    if (noiseSuppressor != null) {
    noiseSuppressor.setEnabled(true);
    Log.i("NOISE", "NoiseSuppressor enabled");
    } else {
    Log.e("NOISE", "Failed to create NoiseSuppressor");
    }
    } else {
    Log.e("NOISE", "This device doesn't support NoiseSuppressor");
    }
    }

    public void enableEchoCanceller() {
    if (AcousticEchoCanceler.isAvailable()) {
    echoCanceler = AcousticEchoCanceler.create(record.getAudioSessionId());
    if (echoCanceler != null) {
    echoCanceler.setEnabled(true);
    Log.i("ECHO", "EchoCanceller enabled");
    } else {
    Log.e("ECHO", "Failed to create EchoCanceller");
    }
    } else {
    Log.e("ECHO", "This device doesn't support EchoCanceller");
    }
    }
    < /code>
1)Why does the Noise Suppressor behavior vary so much across devices?
2)Does the Android version affect the performance of Noise Suppressor API?
3)Is there a way to identify devices where Noise Suppressor may not work as expected?
4)Are there any best practices or alternative solutions to achieve consistent noise suppression across devices?

Подробнее здесь: https://stackoverflow.com/questions/793 ... ow-to-hand
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»