Я работаю над проектом, где мне нужно записывать речевой аудио и выполнять обработку над ним. Я использую 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?
Я работаю над проектом, где мне нужно записывать речевой аудио и выполнять обработку над ним. Я использую API супрессора шума для снижения фонового шума, но я заметил, что поведение этого API значительно различается в разных устройствах. < /P> Например, я записал аудио в течение 10 секунд. В этом сценарии я смоделировал источник фонового шума, расположенный на расстоянии 1-2 метра, в то время как фактическая речь происходит только в течение 1-2 секунд во время записи. < /P> Здесь я заметил значительные вариации в Эффективность подавления шума на разных устройствах: < /p> [list] [*] На некоторых устройствах фоновый шум почти полностью подавлен. (Например, Redmi Note 5 Pro, Samsung S21 Fe) < /p> < /li> На других устройствах фоновый шум остается заметным в течение 10 секунд. (например, Redmi 10, Vivo S1) Я не могу определить основу, на которой это поведение отличается, как [b] Старые устройства/версии Android [/b], кажется, обрабатывают шум подавление лучше, чем [b] новые устройства [/b]. 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>
[/list] 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?
Я генерирую шум, используя распределение Гаусса, и натолкнулся на концептуальный блок.
Есть ли разница между генерацией значения шума и добавлением его к чистым данным:
def add_noise(data_frame, amplitude):
noise = np.random.normal(0, scale =...
Я хотел бы знать, можно ли запрограммировать функцию адаптивной громкости на телефоне Android и насколько это трудоемко. Целью будет программная регулировка громкости белого шума или музыки, воспроизводимой на телефоне через динамики Bluetooth, в...
Я хотел бы знать, можно ли запрограммировать функцию адаптивной громкости на телефоне Android и насколько это трудоемко. Целью будет программная регулировка громкости белого шума или музыки, воспроизводимой на телефоне через динамики Bluetooth, в...
Я работаю над приложением для Android, которое использует службу специальных возможностей для обеспечения безопасного поиска. Он работает, определяя, когда пользователь выполняет поиск/открывает вкладку в поддерживаемом браузере, а затем...
Для получения следующей строки json: { key : value ue , other : invalid quo te
Я хочу зафиксировать каждую недопустимую двойную кавычку внутри значений. В примере есть одна двойная кавычка в значении свойства key и три двойные кавычки в свойстве...