AVAudioPlayer : contatenation de fichiers sons

Paisible.frPaisible.fr Membre
juillet 2012 modifié dans API AppKit #1
Bonjour,



Je souhaiterais dans mon application faire prononcer une phrase a un de mes personnages.



Apres avoir fait quelques recherches de base je pense que AVAudioPlayer corresponde a ce que je souhaite faire.



En revanche la phrase n'etant pas toujours la meme je comptais la decouper en plusieurs fichiers son et creer la phrase en employant une combinaison de ces fichiers en les mettant bout a bout (dis autrement en les jouant les uns a la suite des autres).



Par contre j'ai peur que si je joue les fichiers les uns apres les autre se soit trop saccadé. Quelqu'un a un retour d'experience ?



Une autre solution serait de pouvoir concatener en memoire les bons sont pour n'avoir qu'un seul son final a jouer. Mais je n'ai rien trouver lors de mes recherches. Savez-vous si cela est possible et auriez vous des pistes a me proposer ?



Merci d'avance.



Exemple de phrase: J'habite a Nice en France.

Decoupage:
  • Un MP3 pour le debut de la phrase (exemple: "J'habite")
  • Un MP3 par ville (exemple: "a Nice", "a Madrid", "a Rome"...)
  • Un MP3 par pays (exemple: "en France", "en Espagne", "en Italie"...)

Réponses

  • GranDavGranDav Membre
    juillet 2012 modifié #2
    Hello,



    Je n'ai pas encore trop expérimenté le "gapless playback" mais lors de mes dernières recherches j'ai remarqué le AVQueuePlayer qui demande une liste de lecture en paramètre. Il faut tester si l'enchaà®nement se fait en "gapless".



    Sinon il faut descendre encore plus bas niveau sur CoreAudio et "concaténer" les paquets audios.



    Cependant, relativement à  ton usage, j'utiliserais plutôt une bibliothèque "Text to speech" permettant de faire parler ton application sur n'importe quelle phrase. La société Nuance (Dragon dictation ou encore le moteur de reconnaissance de Siri) propose son propre SDK. L'usage reste gratuit si ton application ne fait pas trop de requêtes, il devient payant au delà  d'une certaine limite.



    En espérant t'avoir aidé.
  • Bon GranDav,



    Tout d'abord merci d'avoir prete attention a mon post et d'avoir pris la peine d'y repondre de maniere claire et fort instructive.

    Cela me donne un avis et de nouvelles pistes a creuser.
    1. La piste du AVQueuePlayer me semble une idee fort interressante : je vais rechercher de ce cote.
    2. Concatener les fichiers audio etait mon idee de base, mais je n'ai pas trouve pour le moment d'information qui me permettrait de comprendre comment faire.
    3. Le text to speech : j'avais regarde ce que propose Creaceed, mais c'etait trop cher et trop lourd pour moi. Je ne savais pas que Nuance proposait un SDK, je vais regarder
    4. De tout maniere le TextToSpeech ne conviendra pas pour mon app. C'est a destination d'un tres jeune public et la voix doit etre adaptee. Il faut une voix type "Dessin animee" je pense.


    Merci pour le coup de main.
  • Mais de rien image/thumbsup.gif' class='bbc_emoticon' alt='' />



    Je suis intéressé par ton retour d'expérience sur AVQueuePlayer du coup.
  • Hier soir en fouillant un peu je suis tombe la dessus :

    http://stackoverflow.com/questions/621182/avaudioplayer-playing-multiple-audio-files-in-sequence



    J'ai fait un test en enchainant deux fichiers mp3 et cela semble convenir a mes besoins. Pas de temps de latence, si de coupure trop brusque pour etre audible. Pas eu le temps d'essayer plus avec la phrases complete composee de 5 fichiers mp3, mais a priori cela devrait repondre a mes besoins. Du coup si c'est le cas je ne testerais probablement pas AVQueuePlayer.



    Merci GranDav.
  • CéroceCéroce Membre, Modérateur
    C'est peut-être quand même plus simple, d'un point de vue architectural, avec AVQueuePlayer parce que tu peux composer toute la phrase dès le début, puis tu ne t'occupes plus de rien. Avec les méthodes déléguées, il faut que tu saches quel mot vient de se terminer pour enchaà®ner sur le suivant.
Connectez-vous ou Inscrivez-vous pour répondre.