Migliorare la qualità della registrazione audio Android?
-
08-07-2019 - |
Domanda
Esiste un modo per registrare l'audio in alta qualità?
E come posso leggere le informazioni che l'utente sta dicendo qualcosa? Nell'applicazione Registrazione audio puoi vedere questo indicatore (non conosco il nome giusto per esso).
Soluzione
Per la registrazione e il monitoraggio: è possibile utilizzare l'attività del registratore di suoni. Ecco un frammento di codice:
Intent recordIntent = new Intent(
MediaStore.Audio.Media.RECORD_SOUND_ACTION);
startActivityForResult(recordIntent, REQUEST_CODE_RECORD);
Per un perfetto esempio funzionante di come registrare l'audio che include un monitor di input, scarica il progetto Ringdroid open source: https://github.com/google/ringdroid
Guarda gli screenshot e vedrai il monitor.
Per rendere l'audio di qualità superiore, avresti bisogno di un microfono migliore. Il microfono incorporato può solo catturare così tanto (che non è poi così buono). Ancora una volta, guarda il progetto ringdroid, raccogli alcune informazioni da lì. A quel punto potresti implementare alcune routine di normalizzazione e amplificazione per migliorare il suono.
Altri suggerimenti
Al momento, un grande motivo per la scarsa qualità della registrazione audio su Android è il codec utilizzato dalla classe MediaRecorder (il codec AMR-NB). Tuttavia, puoi accedere all'audio non compresso tramite la classe AudioRecord e registrarlo direttamente in un file.
La Rehearsal Assistant app fa questo per salvare l'audio non compresso in un file WAV - dai un'occhiata a codice sorgente della classe.
La classe RehearsalAudioRecord fornisce anche un metodo getMaxAmplitude, che è possibile utilizzare per rilevare il livello audio massimo dall'ultima volta che è stato chiamato il metodo (MediaRecorder fornisce anche questo metodo).