2010-07-01 1 views
0

Je travaille sur un programme pour les personnes malentendantes. J'ai travaillé avec sapi et un TTs. Le programme fait une animation 3D avec une main en même temps. Mais le problème est que les voix (aussi quand on les met à son discours le plus lent) est de jeûner pour ce que je veux. J'ai donc pensé à la reconnaissance de la parole, mais le problème est que je dois faire un grand processus au texte avant le début de l'animation. Donc, je veux savoir si il serait possible de faire de la reconnaissance vocale (à partir de ma voix sur un fichier .wave) et ensuite faire le même processus de TTs (avec des événements Sapi ...) mais en utilisant le .wave avec ma voix.Il est possible de faire SpeechToText (reconnaissance vocale) et TextToSpeech par la suite (en utilisant le même texte et la même voix)?

Si c'est possible, s'il vous plaît dites-moi comment. Si vous pensez qu'il existe de meilleures alternatives, laissez-moi les voir.

Merci pour votre temps (et excusez mon anglais)

Jesuskiewicz

+0

Etes-vous sûr que vous ne pouvez pas synchroniser seulement les animations aux événements visème ou phonème? Aussi, pourquoi ne pas traiter le texte avant d'envoyer le texte au moteur TTS? –

+0

Non, parce que, même quand un TTS configuré pour parler avec la vitesse la plus lente, est trop rapide, et il fait aussi le son de la voix robotique.En outre, les animations sont référencées au niveau de sylabe, donc je ne peux pas synchroniser en temps réel. – Jesuskiewicz

+0

donc, si je comprends bien le problème, vous avez du texte, et vous voulez utiliser TTS, mais vous devez également synchroniser le TTS avec l'animation de signature. Le problème que vous rencontrez est que les animations de signature sont relativement longues et que vous perdez la synchronisation. Ce que je ne comprends pas (encore), c'est ce que vous voulez faire quand les animations sont trop longues - voulez-vous insérer des pauses entre les mots? –

Répondre

0

Maintenant que je comprends ce que vous voulez arriver, je peux dire que, pour autant que je sache, le moteur SAPI SR ne vraiment fournir un balisage au niveau du phonème qui est synchronisé avec le texte entrant.

Qu'est-ce que vous pourriez essayer (même si je ne l'attente réelle pour que cela fonctionne) serait de prendre l'audio, l'exécuter à travers une grammaire de prononciation pour générer phonèmes, puis prendre les éléments de texte pour trouver les bits correspondants de l'audio.

Quand je dis une « grammaire de prononciation », je veux dire une grammaire de dictée avec le modèle de prononciation chargé - mettre en place comme ceci:

CComPtr<ISpRecoGrammar> cpGrammar; 
... initialize SR engine and create a grammar ... 
cpGrammar->LoadDictation(L"Pronunciation", SPLO_STATIC); 

Dans votre gestionnaire de reconnaissance, vous devez analyser les éléments :

ISpRecoResult* ipReco; 
SPPHRASE* pPhrase; 
ipReco->GetPhrase(&pPhrase); 
for (int i = 0; i < pPhrase->Rule.ulCountOfElements; ++i) 
{ 
    const SPPHRASEELEMENT * pElem = pPhrase->pElements + i; 
    // examine pElem->ulAudioSizeTime, etc. 
} 
::CoTaskMemFree(pPhrase); 

J'espère que cela est suffisant pour vous aider à démarrer ...

+0

Merci pour la réponse. Je pense que je vais prendre un autre chemin (si je le trouve) ... Mon erreur était que je pensais que quand vous faites la reconnaissance, il y avait Viseme_events comme quand vous faites Synthesis ... Mais c'est vrai, j'ai réalisé que Cela n'a pas de sens, la reconnaissance est au niveau des mots. Merci encore – Jesuskiewicz

Questions connexes