2009-09-17 6 views
2

J'utilise l'API JSpeex pour convertir un fichier .wav en fichier .spx. Tout va parfaitement quand testé sur le bureau; cela n'a pris que 2 secondes.Conversion de WAV en Speex prenant beaucoup de temps

Le développeur Android a utilisé le même code mais il a fallu environ 3 minutes pour encoder le même fichier sur son téléphone simulateur &. Est-il possible de réduire ce temps pour l'encodage? Le code utilisé pour la conversion est le suivant:

new JSpeexEnc().encode(new File("source.wav"), new File("dest.spx")); 
+0

Existe-t-il un moyen de profiler une application sur un androïde. Peut-être que c'est IO qui prend la plupart du temps? Existe-t-il quelque chose comme -server pour jvm sur Android afin qu'il utilise JIT? Y a-t-il JIT pour Android? –

Répondre

1

La compression prend du temps. Plus la compression est bonne, plus cela prend de temps et Speex est une bonne compression.

2 secondes de l'heure de l'ordinateur de bureau vieillit absolument.

JSpeex est une implémentation Java. Utilisez une implémentation native, idéalement, utilisez les codecs de la plateforme.

Sur les téléphones, la parole est mieux compressé en utilisant AMR - pas nécessairement la meilleure qualité/compression, mais le matériel probablement accéléré depuis son format utilisé par le GSM. Vous pouvez généralement obtenir AMR directement à partir du microphone.

Comment obtenez-vous de gros fichiers WAV sur un appareil Android en premier lieu? Si c'est effectivement la sortie du microphone, pensez à utiliser AMR comme indiqué ci-dessus.

Si vous avez besoin de Speex et que vous avez un fichier wav, pensez à l'envoyer à un serveur pour la compression.

+0

Merci pour la réponse rapide, J'ai encore une question, Si plusieurs plates-formes (Iphone, Windows, Symbina) utilisent leurs types de fichiers natifs et encoder en utilisant speex, Est-il possible de décoder les mêmes et les jouer? Merci, Rohit –

+0

L'iPhone ne prend pas en charge * l'enregistrement * AMR prêt à l'emploi (bien que ce soit le cas pour les appels téléphoniques - il n'est pas exposé à des tiers), mais vous pouvez mettre en communication un encodeur. La lecture fonctionne apparemment. Les fenêtres et les téléphones Android et Symbian utilisent tous AMR. – Will

+0

Merci pour vos réponses rapides et utiles –

Questions connexes