2008-10-05 3 views
2

Je veux écrire un programme dans lequel joue un fichier audio qui lit un texte. Je veux mettre en relief la syllabe actuelle que l'audiofile joue en vert et le reste du mot courant en rouge. Quel type de structure de données dois-je utiliser pour stocker le fichier audio et les informations qui indiquent au programme quand passer au mot/syllabe suivant?Quelle structure de données pour lier le texte avec l'audio en Java

Répondre

3

Ceci est une suggestion légèrement à gauche, mais avez-vous regardé le logiciel Karaoke? Cela peut ne pas être considéré comme assez "sérieux", mais cela ressemble beaucoup à ce que vous faites. Par exemple, Aegisub est un programme de sous-titrage qui vous permet de créer des sous-titres au format SSA/ASS. Il a des outils de karaoké pour hilighting le mot choisi ou une partie.

Il est le plus couramment utilisé pour le sous-titrage anime, mais il fonctionne aussi pour l'audio à condition que vous avez un lecteur approprié. Ce sont malheureusement assez rares sur le Mac.

Le format ressemble à celui proposé par Yuval A:

{\K132}Unmei {\K34}no {\K54}tobira 
{\K60}{\K132}yukkuri {\K36}to {\K142}hirakareta 

Les longueurs sont durées plutôt que des décalages absolus. Cela facilite le décalage du début de la ligne sans recalculer tous les décalages. La double entrée indique une pause.

Y a-t-il une bonne raison pour que cela fasse partie de votre programme Java, ou est-ce une solution disponible immédiatement?

0

vous pouvez vous familiariser avec FreeTTS - cet outil open source: http://freetts.sourceforge.net/docs/index.php -

Vous pouvez nourrir seulement quelques mots au moteur TTS à un moment donné - les mettre en évidence et une fois ceux-ci sont éteints, les désactivez et passez au lot de mots suivant.

BR,
~ A

+0

Je ne veux pas de voix synthétique, mais je veux utiliser un fichier audio préexistant du texte en question. – Christian

1

Que diriez-vous d'une simple structure de données qui décrit ce prochain lot de lettres se compose de la syllabe suivante et l'horodatage pour le passage à cette syllabe?

Juste un exemple rapide:

[0:00] Ce [00:02] est [00:05] un [00:07] ex [00:08] am- [0:10] ple

1

Pour mettre en surbrillance une partie du mot, sonne comme phonetics qui sont des sons qui composent des mots. Il sera vraiment difficile de transformer un fichier sonore en quelque chose qui «lira» un texte. Votre meilleur pari est d'utiliser le texte lui-même pour conduire un moteur basé sur la phonétique, comme FreeTTS qui est basé sur le Java Speech API.

Pour ce faire, vous devrez prendre le texte à lire, le diviser en chaque syllabe phonétique et le jouer. donc "syllabe" est "syl" "la" "ble". Jouer serait; mettez en surbrillance syl, dites-le et passez au suivant.

Ceci est vraiment "old-skool" il a été fait sur le Apple II d'origine de la même manière.

Questions connexes