- Seb,
Bonjour
J'ai crée avec ma raspberry pi et une petite enceinte un petit projet node.js il y a quelques jours me permettant d'envoyer un message via un interface web à celui-ci (rsp) et qu'il prononce ce message avec une voix artificielle. J'ai crée plusieurs petites fonctions sympa: réveil, musique, news… J'ai voulu rajouter une petite fonction permettant de faire raconter des creepypastas (des histoires qui font peurs).
J'utilise une api pour générer la voix artificielle, acapela-boxe. Je n'ai pas trouvé un autre moyen de générer une voix artificiellement étant gratuit, malheureusement l'api google translate ne l'ai plus il y a quelques mois. Cette api limite l'entrée texte à 300 caractères, ce qui est dérangeant puisqu'une histoire fait plus de 300 caractères. J'ai donc pensé à tronquer le texte à cette limite, le problème, c'est que je voudrais qu'il ne soit pas tronquer au milieu d'une phrase ou d'un mot. Je ne sais pas du tout comment je pourrais procéder, je vous affiche le code de ma fonction, son but est de transformer un texte en mp3 (m'voyez ce que je veux dire).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | function get_mp3(lang, voice, text, destination){ var max_lenght = 300; if(text.length >= max_lenght) { console.log('You are not allowed to process text tire more than 300 characters !'); text = text.substring(0, max_lenght); } request.post({url:'http://www.acapela-group.com/demo-tts/DemoHTML5Form_V2.php', form: { MyLanguages:lang, MySelectedVoice:voice, MyTextForTTS: text, t:"1", SendToVaaS:"" }}, function(err, httpResponse, body){ var patt = /\'(http:\/\/(?:\w|\.|\/|-)+\.mp3)\'/; var res = body.match(patt); var url = res[1]; console.log(url); request(url, {encoding: 'binary'}, function(err2, httpResponse2, body2) { if(!err2 && httpResponse2.statusCode == 200) { fs.writeFile(destination, body2, 'binary', function(err3) { if(err3) console.log(err3); else console.log("The file was saved!"); say(destination); }); } }); }); } |