SAPI, JavaScript et PHP (rien que ca :p)
Bonjour � tous,
Je vous explique mon probl�me. Je dois int�grer la voix � une application web, en utilisant SAPI (Speech API by Windows). Premi�re contrainte, utiliser les ActiveX pour pouvoir utiliser SAPI et donc, pas le choix, utiliser IE. On trouve quelques exemples de code en javascript sur le net (pratiquement toujours les m�mes en fait), qui fonctionnent plus ou moins bien. Toujours est il que j'ai r�ussi � faire parler mon ordinateur � un moment donn�.
Le soucis �tant, que ce que l'on souhaite faire dire � la machine est r�cup�r� d'une BBD, des variables php donc.
La aussi, on trouve des exemples pour faire du javascript avec du php. Sauf que... ca marche pas !! :cry:
Rien a faire, on a tourn� le probl�me dans tous les sens, ca refuse de dire un traitre mot et comble du d�sespoir, ce qui marchait... ne marche plus. M�me en revenant au code de d�part... Plus moyen de tirer un mot de ma machine.
[drama] Vous �tes mon dernier espoir ! [/drama]
Voila mon code, si jamais cela peut vous inspirer une solution... Merci d'avance ! ;)
Code:
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 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="language" content="fr" />
<meta http-equiv="Content-Type" content="html; charset=utf-8" />
<meta http-equiv="Content-Script-Type" content="javascript" />
<title>Talking Page</title>
<script type="javascript">
// check if activeXobject is usable
if (window.ActiveXObject) {
var VoiceObj = new window.ActiveXObject("SAPI.SpVoice");
} else {
alert('ActiveX non disponible (seulement sous IE).');
}
function SpeakText (text_to_speech) {
if (VoiceObj) {
VoiceObj.Speak(text_to_speech, 1);
} else {
alert ('VoiceObj non défini.');
}
}
</script>
</head>
<body>
<?php
$text_php = "This is a test which should be efficient on Internet Explorer.";
?>
<!-- Methode 0 -->
<script type="javascript">
var text = "This is a test which should be efficient on Internet Explorer.";
</script>
<!-- Méthode 1 -->
<?php
echo '<script type="javascript">
var text1 = "'.$text_php.'";
</script>';
?>
<!-- Méthode 2 -->
<script type="javascript">
var text2 = "<?php echo $text_php; ?>";
</script>
<!-- Bouton -->
<input onclick="SpeakText(text);" type="button" value="Repeat" />
</body>
</html> |
Parmis les principaux messages d'erreur re�us :
- Un compasant ActiveX ne peut pas cr�er un objet.
- Objet attendu. (pour le bouton)
- VoiceObj � la valeur Null ou n'est pas un objet. (dans la fonction SpeakText dans le header. Il arrive m�me a me la coller 2 fois � cette ligne.)
Sinon quand "tout va bien", il me dit que mes variables 'text/text1/text2' ne sont pas d�finies, sachant qu'avant la "m�thode 0" fonctionnait et plus maintenant. Il ne me demande m�me plus d'activer les ActiveX alors que j'y ai droit � chaque fois "normalement".
En esp�rant ne pas avoir fait trop de fautes et avoir plac� ce message dans le bon forum. ^^'
OnLoad qui s'ex�cute pas en premier...
Whooch ! Ca fonctionne ! Enfin ! All�luia !!
Le probl�me venait d'Internet Explorer (je le savais ! �_�) et de ses param�tres de s�curit� ! Un ptit bidouillage, des autorisations accord�es et le tour est jou� ! Au final, s'�tait pas grand chose... c'est fou comme on peut perdre du temps pour rien.
Maintenant, deuxi�me probl�me : onLoad en dernier ?
Lorsque j'ins�re ce code dans le site, je souhaiterai qu'il parle � l'ouverture de la page. Je met donc le onLoad="chargement();" dans ma balise body. Rien d'extraordinaire. Sauf que... On entends rien et IE me dit que vox n'est pas d�fini !! Quelques alert bien plac�es et on se rend compte que les scripts de synth�se vocal plac� entre les balises body (dans un div) s'ex�cute avant la fonction chargement ! Le onload s'ex�cute apr�s...
J'avoue �tre un peu perplexe. Des suggestions ?