2015-10-07 1 views
3

J'ai une application IVR qui exécute SSML 2.0 sur Voice Server 4.0Ralentir TTS avec <prosody> Peut-être pépin?

Je suis en mesure de ralentir avec succès vers le bas la sortie TTS lors de l'utilisation

<prosody rate="slow"> Hello </prosody> 

Je suis en mesure d'utiliser dire, pour parler chiffres , au lieu d'un nombre entier

<say-as interpret-as="number_digit">1234567890</say-as> 

Cependant, il semble que je ne puisse pas utiliser les deux en même temps. Tant que <say-as> est actif, le taux ne change pas.

par exemple

<prosody rate="slow"> 
<say-as interpret-as="number_digit">1234567890</say-as> 
</prosody> 

produit une sortie de chiffres unique, mais pas à un rythme lent. Y at-il une sorte de problème de compatibilité ou quelque chose qui me manque? Ou, y a-t-il une autre façon d'accomplir mon objectif? Le nombre parlé étant un nombre long que l'utilisateur doit vérifier, un ralentissement de TTS est très important.

Répondre

2

Cela peut fonctionner:

<say-as interpret-as="number_digit"> 
    <prosody rate="slow">1234567890</prosody> 
</say-as> 

Cela fonctionne:

<prosody rate="slow">1</prosody> 
<prosody rate="slow">2</prosody> 
<prosody rate="slow">3</prosody> 
... 

Voici comment faire en utilisant PHP:

<?php 
for($i = 0; $i < strlen($number.""); $i++){ //$number."" to cast it as string. 
?> 
    <prosody rate='slow'><?=substr($number, $i, 1)?></prosody> 
<?php 
} 
?> 
+0

L'exemple fond fonctionne comme nous attendre, il lit chaque chiffre à un rythme lent. Cependant, l'exemple le plus haut ne le fait pas. Il semble que lorsque Prosody est à l'intérieur de la balise , il plante le serveur vocal. Quand il est en dehors du dicton - comme il est simplement ignoré et TTS le lit rapidement. Le problème de l'exemple 2 est qu'il s'agit d'une valeur entrée par l'utilisateur et qui ne peut pas être codée en dur. Peut-être qu'il y a un travail autour de casser les chiffres? Est-il possible de diviser une chaîne en chiffres simples via PHP? Pire encore pire peut-être que je pourrais mordre la balle et il a lu chaque chiffre divisé –

+0

oui c'est possible. Utilisez la fonction 'substr()'. –

+0

Merci! Le dernier extrait de code a pu résoudre mon problème. J'ai fait une modification cependant. pour référence future, j'ai supprimé Prosody de l'extrait PHP et ajouté qui permet plus d'une pause sans la distorsion causée par la prosodie. Merci beaucoup pour votre aide. –