Forum des Objets Communicants et Solutions pour les Libérer...


 
AccueilAccueil  GalerieGalerie  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  Connexion  

Partagez | 
 

 TTS acapela

Voir le sujet précédent Voir le sujet suivant Aller en bas 
Aller à la page : Précédent  1, 2
AuteurMessage
bretelles
Lapin nain
Lapin nain


Nbr de messages : 48

MessageSujet: Re: TTS acapela   Jeu 22 Déc 2016 - 23:28

bretelles a écrit:
Mais bon, c'est ma première fois avec python
Ah le boulet, je m'auto flagelle, c'est du C++ tout ce qu'il y a de plus classique...
Bon je début avec QT est une excuse valable ? yellownabzwink

J'avance peu, j'ai simplifié le code, essayé avec user agent, content type... pas de résultat.
Et puis j'ai testé le fichier généré sauvegardé côté serveur et ... il est bon lui.
C'est juste le lapinou qui tronque à la fin, quelqu'un a déjà vu ça ?
Je continue en tout cas yellownabzwink

Edit: acapela renvoie du 22050 Hz à 48 kbit/s, responsivevoice c'est du 24000 Hz à 32 kbit/s ... le problème est peut-être là ? (les deux en mono mpga)
Revenir en haut Aller en bas
bretelles
Lapin nain
Lapin nain


Age : 40
Localisation : Paris
Nabaztag : Agatag et Barnab (serveur local)
Nbr de messages : 48
Carottes : 2187

MessageSujet: Re: TTS acapela   Ven 23 Déc 2016 - 16:52

Bon j'ai une solution mais c'est bourrin nabzcryriver

il faut installer lame par un
Code:
sudo apt-get install lame
pour réencoder le fichier audio car le problème est bien là.

et puis voici mon code modifié de tts_responsivevoice.cpp
Code:
QByteArray TTSresponsivevoice::CreateNewSound(QString text, QString voice, bool forceOverwrite)
{
 QEventLoop loop;

 if(!voiceList.contains(voice))
 voice = "fr";

 // Check (and create if needed) output folder
 QDir outputFolder = ttsFolder;
 if(!outputFolder.exists(voice))
 outputFolder.mkdir(voice);

 if(!outputFolder.cd(voice))
 {
 LogError(QString("Cant create TTS Folder : %1").arg(ttsFolder.absoluteFilePath(voice)));
 return QByteArray();
 }

 // Compute fileName
 QString fileName = QCryptographicHash::hash(text.toAscii(), QCryptographicHash::Md5).toHex().append(".mp3");
 QString filePath = outputFolder.absoluteFilePath(fileName);

 if(!forceOverwrite && QFile::exists(filePath))
 return ttsHTTPUrl.arg(voice, fileName).toAscii();

    // Fetch MP3
    QHttp http("responsivevoice.org");
    QObject::connect(&http, SIGNAL(done(bool)), &loop, SLOT(quit()));

    QHttpRequestHeader Header("GET", "/responsivevoice/getvoice.php?tl=fr&t=" + QUrl::toPercentEncoding(text));
    Header.setValue("Host", "responsivevoice.org");
    Header.setContentLength(0);
    http.request(Header, "");
    loop.exec();

 QFile file(filePath + ".mp3");
 if (!file.open(QIODevice::WriteOnly))
 {
 LogError("Cannot open sound file for writing");
 return QByteArray();
 }
 file.write(http.readAll());
 file.close();
 system(QString("lame -b 48 --resample 22.05 " + filePath + ".mp3 " + filePath).toAscii());
 file.remove();
 return ttsHTTPUrl.arg(voice, fileName).toAscii();
}

Bon c'est vraiment bourrin mais chez moi ça semble ok.
Revenir en haut Aller en bas
bretelles
Lapin nain
Lapin nain


Age : 40
Localisation : Paris
Nabaztag : Agatag et Barnab (serveur local)
Nbr de messages : 48
Carottes : 2187

MessageSujet: Re: TTS acapela   Dim 25 Déc 2016 - 20:29

Bonsoir à tous,
joyeux Noël déjà yellownabzsmile

Je continue mon monologue, j'ai essayé de dégrader la qualité pour réduire la taille des mp3 mais bon, c'est pas terrible, j'ai juste rajouté un paramètre pour que lame traite plus rapidement le fichier en rajoutant le paramètres -f dans la ligne d'appel à lame, cela donne:
Code:
system(QString("lame -f -b 48 --resample 22.05 " + filePath + ".mp3 " + filePath).toAscii());

J'ai crée un topic pour le "hack" ce sera plus propre, voir ici


Bretelles
Revenir en haut Aller en bas
bretelles
Lapin nain
Lapin nain


Age : 40
Localisation : Paris
Nabaztag : Agatag et Barnab (serveur local)
Nbr de messages : 48
Carottes : 2187

MessageSujet: Re: TTS acapela   Mer 25 Jan 2017 - 11:26

Bonjour à tous,
responsivevoice semble avoir du mal aujourd'hui, quelqu'un confirme ?

Bretelles
Revenir en haut Aller en bas
bretelles
Lapin nain
Lapin nain


Age : 40
Localisation : Paris
Nabaztag : Agatag et Barnab (serveur local)
Nbr de messages : 48
Carottes : 2187

MessageSujet: Re: TTS acapela   Sam 25 Fév 2017 - 14:22

Bonjour à tous,
Juste pour info, et pour ceux que ça intéresse, j'ai fait une modification d'encodage encore, c'est plus rapide, de meilleure qualité mais un chouilla plus gros...
Donc toujours sur l'appel à lame:
Code:
system(QString("lame -f --resample 32 " + filePath + ".mp3 " + filePath).toAscii());
Juste un petit resampling à 32 Khz suffit, responsive voice renvoie déjà un mp3 en CBR...


Bretelles

Edit: d'ailleurs je mets la fonction complète car l'url a changé !

Code:
QByteArray TTSresponsivevoice::CreateNewSound(QString text, QString voice, bool forceOverwrite)
{
 QEventLoop loop;

 if(!voiceList.contains(voice))
 voice = "fr";

 // Check (and create if needed) output folder
 QDir outputFolder = ttsFolder;
 if(!outputFolder.exists(voice))
 outputFolder.mkdir(voice);

 if(!outputFolder.cd(voice))
 {
 LogError(QString("Cant create TTS Folder : %1").arg(ttsFolder.absoluteFilePath(voice)));
 return QByteArray();
 }

 // Compute fileName
 QString fileName = QCryptographicHash::hash(text.toAscii(), QCryptographicHash::Md5).toHex().append(".mp3");
 QString filePath = outputFolder.absoluteFilePath(fileName);

 if(!forceOverwrite && QFile::exists(filePath))
 return ttsHTTPUrl.arg(voice, fileName).toAscii();

    // Fetch MP3
    QHttp http("code.responsivevoice.org");
    QObject::connect(&http, SIGNAL(done(bool)), &loop, SLOT(quit()));

    QHttpRequestHeader Header("GET", "/getvoice.php?tl=fr&t=" + QUrl::toPercentEncoding(text));
    Header.setValue("Host", "code.responsivevoice.org");
    Header.setContentLength(0);
    http.request(Header, "");
    loop.exec();

 QFile file(filePath + ".mp3");
 if (!file.open(QIODevice::WriteOnly))
 {
 LogError("Cannot open sound file for writing");
 return QByteArray();
 }
 file.write(http.readAll());
 file.close();
 system(QString("lame -f --resample 32 " + filePath + ".mp3 " + filePath).toAscii());
 file.remove();
 return ttsHTTPUrl.arg(voice, fileName).toAscii();
}

Pour ne pas prendre ma modification, changer dans la fonction d'origine QByteArray TTSresponsivevoice::CreateNewSound(QString text, QString voice, bool forceOverwrite)
2 fois :
Code:
responsivevoice.org
par
Code:
code.responsivevoice.org
et 1 fois
Code:
/responsivevoice/getvoice.php?
par
Code:
/getvoice.php?
Revenir en haut Aller en bas
vm006
Lapin nain
Lapin nain


Localisation : Amiens
Nabaztag : Nabz1 (Nabaztag V1) - Gildun,Hatysa,Fidis,Erakis (Nabaztags:tag tous sur serveur local) - Aldebaran,Beid,Castor,Dheneb (Tous Karotz sous Freerabbits + OpenKarotz)
Nbr de messages : 17
Carottes : 1036

MessageSujet: Re: TTS acapela   Lun 24 Avr 2017 - 11:11

tikismoke a écrit:
https://github.com/OpenJabNab/OpenJabNab/pull/50

Le PR est posté, il faut refaire un make dans server/ et modifié le fichier fichier de configuration /server/bin/openjabnab.ini pour changer le TTS:

"TTS=responsivevoice"

Bon redémarrage à tous yellownabzsmile

Bonjour

Je suis totalement incompétent en github yellownabzsad
J'ai réussi à faire l'install sur mon raspbérry il y a quelques mois, tout marche bien par contre comment je fais pour que la mise à jour descende sur le raspberry avant de faire le make ?
merci de vos réponses à cette question surement un peu idiote yellownabzsad

Merci en tout cas de vos modifications qui nous permettent de continuer à utiliser nos ptits lapins

Vincent

Revenir en haut Aller en bas
bretelles
Lapin nain
Lapin nain


Age : 40
Localisation : Paris
Nabaztag : Agatag et Barnab (serveur local)
Nbr de messages : 48
Carottes : 2187

MessageSujet: Re: TTS acapela   Sam 29 Avr 2017 - 14:51

Salut vm006,

je ne suis pas un pro non plus, j'ai procédé de la façon suivante:
- changement d'utilisateur pour être en ojn
- création des 3 fichiers de titismoke en ligne de commande avec la commande nano et copie des contenus de github
- modification du quatrième fichier et lancement du make au niveau du répertoire server.

Pour t'aider voilà mon répertoire tts en version zippée à dézipper dans /home/ojn/OpenJabNab/server avec mes modifications mais il faut aussi faire un
Code:
sudo apt-get install lame
pour que tout fonctionne correctement.
[url=cherche.heritier.free.fr/nabaztag/tts.zip]Mon code[/url]

Tiens moi au jus si tu as besoin de plus d'aide.

Bretelles
Revenir en haut Aller en bas
vm006
Lapin nain
Lapin nain


Localisation : Amiens
Nabaztag : Nabz1 (Nabaztag V1) - Gildun,Hatysa,Fidis,Erakis (Nabaztags:tag tous sur serveur local) - Aldebaran,Beid,Castor,Dheneb (Tous Karotz sous Freerabbits + OpenKarotz)
Nbr de messages : 17
Carottes : 1036

MessageSujet: Re: TTS acapela   Sam 13 Mai 2017 - 8:07

Bonjour bretelles

Desole du retour tardif, un peu debordé ces temps ci
J'ai fait comme tu l'indiques et les "bestiaux" reparlent a nouveau yellownabzsmile

Merci a toi
Revenir en haut Aller en bas
bretelles
Lapin nain
Lapin nain


Age : 40
Localisation : Paris
Nabaztag : Agatag et Barnab (serveur local)
Nbr de messages : 48
Carottes : 2187

MessageSujet: Re: TTS acapela   Sam 13 Mai 2017 - 10:35

Cool, perso je trouve la voix pas si mal que ça en tout cas yellownabzsmile
Bon WE !
Revenir en haut Aller en bas
Contenu sponsorisé




MessageSujet: Re: TTS acapela   

Revenir en haut Aller en bas
 
TTS acapela
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 2 sur 2Aller à la page : Précédent  1, 2
 Sujets similaires
-
» acapela tv
» Acapela for fun
» Message d'erreur Acapela demo did not return a sound file
» cute cartoon créateur
» Inside of Nabaztag/tag

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum des Objets Communicants et Solutions pour les Libérer... :: II. Nabaztag, Karotz, mir:ror, Dal:Dal (Violet Object Operating System) :: Les Nabaztags sont sauvés ! Les solutions... :: [OJN] OpenJabNab-
Sauter vers: