Traitement audio en temps réel sur Android

j'essaie de comprendre comment écrire une application qui peut décoder le code morse audio à la volée. J'ai trouvé ce document qui explique comment enregistrer l'audio du microphone sous Android. Ce que j'aimerais savoir, c'est s'il est possible d'accéder à l'entrée brute à partir du microphone ou si elle doit être écrite/lue dans un fichier.

Merci.

32
demandé sur Paul R 2010-02-13 12:28:18

4 réponses

si vous utilisez MediaRecorder (l'exemple ci-dessus), vous sauvegarderez l'audio comprimé dans un fichier.

si vous utilisez AudioRecord , vous pouvez obtenir des échantillons audio directement.

Oui, ce que vous voulez faire devrait être possible.

22
répondu dmazzoni 2010-03-10 22:09:07

utilisant AudioRecord est exagéré. Il suffit de vérifier MediaRecorder.getMaxAmplitude () toutes les 1000 millisecondes pour les bruits forts contre le silence.

Si vous avez vraiment besoin d'analyser la forme d'onde, alors oui, vous avez besoin AudioRecord. Obtenez les données brutes et calculez quelque chose comme la moyenne racine au carré de la partie des octets bruts dont vous êtes concerné pour obtenir une idée du volume.

mais, pourquoi faire tout cela quand MediaRecorder.getMaxAmplitude () est tellement plus facile utiliser.

voir mon code de cette réponse: cette question

6
répondu gregm 2017-05-23 12:10:34

il y a un cadre de détection de MIT media labs appelé funf: http://code.google.com/p/funf-open-sensing-framework/

Ils ont déjà créé des classes pour l'entrée audio et certaines analyses (FFT et autres), l'enregistrement des fichiers ou le téléchargement est mis en œuvre autant que je l'ai vu, et ils gèrent la plupart des capteurs disponibles sur le téléphone. Vous pouvez également vous inspirer du code qu'ils ont écrit, ce qui est assez bien.

6
répondu Andrei 2013-05-26 21:42:50

on dirait qu'il faut le jeter d'abord dans un fichier.

si vous regardez l'androïde .Média.AudioRecord source , les tampons natifs des octets de données audio ne sont pas exposés à l'API publique.

d'après mon expérience, ayant construit un synthétiseur audio pour Android, il est difficile d'obtenir des performances en temps réel et de maintenir la fidélité audio. Un "traducteur" de code Morse est certainement faisable cependant, et ressemble à un petit projet amusant. Bonne Chance!

-2
répondu Dagwoody Djiboutay 2011-08-12 15:05:36