Les méthodes de Aspeak (D6 Mac)
L'extension Speech Manager et le tableau de bord Speech permettent
au Mac de lire un texte en synthèse vocale (en anglais ou
en espagnol). Pour que Director tire parti de cette fonctionnalités,
aspeak fut longtemps le seul Xobjet disponible. Nous vous proposons
de découvrir les méthodes de aspeak.
On s'enquiert des Xchoses disponibles en saisissant ShowXlib dans
la fenêtre message de Director:
showXlib
-- XLibraries:
-- Xtra: QTVRXtra
-- Xtra: ScriptColor
-- Xtra: PrintOMatic_Lite
-- Xtra: NetLingo
-- Xtra: Mui
-- Xtra: fileio
-- "*Standard.xlib"
-- XObject: SerialPort
Id:200
-- XObject: XCMDGlue
Id:2020
Aucun Xobjet externe n'apparaît dans la deuxième partie
de cette liste, nous allons y remédier en indiquant
à Director le chemin du fragment de code externe que nous
voulons utiliser ("aspeak"). L'animation et aspeak sont enregistrés
dans le même dossier; aucune mention de chemin n'est donc
requise. Nous saisissons :
openXlib "ASpeak XOBJ"
Où Aspeak XOBJ est le nom actuel du fichier contenant le
fragment de code. Director n'indique pas si l'ouverture de l'Xobjet
a réussie. pour le savoir et connaître le nom véritable
de l'Xobjet, Il nous faut interroger Director un nouvelle fois :
showXlib
-- XLibraries:
-- Xtra: QTVRXtra
-- Xtra: ScriptColor
-- Xtra: PrintOMatic_Lite
-- Xtra: NetLingo
-- Xtra: Mui
-- Xtra: fileio
-- "*Standard.xlib"
-- XObject: SerialPort
Id:200
-- XObject: XCMDGlue
Id:2020
--- XObject: aspeak
Aspeak est désormais utilisable. Mais quelles sont ses méthodes.
Passée à l'objet, la méthode globale mDescribe
fournit la liste des fonctions disponibles :
put aspeak(mDescribe)
-- Factory: ASpeak ID:1998
-- ASpeak, Speaks strings using the Speech Manager, v1.0
-- Copyright © 1994 by Brian Stern, All rights reserved.
-- The ASpeak external object is shareware.
-- If you use this product you must send the shareware
-- fee of US$20 to Brian Stern
-- 10506A Little Pebble Drive
-- Austin, TX 78758
-- You can also contact me at Jaeger@fquest.com
(on internet).
IS mNew, voicename
-- Specify name of voice for this channel.
X mDispose
-- Dispose of the object.
XS mSpeakText, text
-- Speak this text.
IS mSetVoice, voicename
-- Change the current voice.
S mGetVoice
-- Return the current voice.
SS mGetVoiceGender, voicename -- Return gender of specified
voice.
SS mGetVoiceComments, voicename -- Return comments for specified
voice.
SS mGetVoiceAge, voicename -- Return
age of specified voice.
I mAreWeSpeaking
-- Is this voice currently speaking?
I mAreAnySpeaking
-- Are any voices currently speaking?
I mAreWePaused
-- Is this voice paused?
X mStopSpeech
-- Interrupt speech now.
X mStopSpeechEndOfWord
-- Interrupt speech at end of current word.
X mStopSpeechEndOfSentence -- Interrupt
speech at end of current sentence.
X mPauseSpeech
-- Pause speech now.
X mPauseSpeechEndOfWord
-- Pause speech at end of current word.
X mPauseSpeechEndOfSentence -- Pause speech
at end of current sentence.
X mContinueSpeech
-- Continue speech after a pause.
I mCountVoices
-- How many voices are installed?
SI mGetVoicebyIndex, index -- Get
the name of the next voice,
-- index should repeat from 1 to Count voices.
I mUseDictionary
-- Use a Speech Manager dictionary resource
-- errors returned by mNew and mSetVoice are noSpeechManager (-1)
-- insufficient memory (-108), and speech manager errors (-240 to
-259).
----
-- <Null>
Les neuf premières lignes sont claires : aspeak est shareware
et son utilisation implique le règlement de droits à
son auteur. Les lignes suivantes présentent une à
une et de façon conventionnelle, les méthodes utilisables
pour aspeak. Chacune de ces lignes est rédigée de
la même manière :
Le groupe de lettres initiales (capitales souvent) fournit de indications
sur le type que la fonction retourne (premier caractère)
et le type d'arguments qu'elle requiert (tous les autres).
X indique que la fonction ne retourne aucune valeur
I désigne un entier (ou un booléen)
S une chaîne de caractères entre guillemets
plus rarement on rencontre dans ces listes :
L pour une liste d'entiers (ou un entier long)
P pour une image
O pour une instance d'objet
V pour un type original (exemple une image PICT)
Nous devons commencer par créer une instance de aspeak en
utilisant la méthode globale mNew. L'instance (ou enfant)
doit recevoir un nom de baptême nous permettant de l'invoquer :
plus précisément nous allons utiliser une variable
pour nommer celle-ci.
set Crapo to aspeak(mNew,"zarvox")
La méthode mNew et l'argument de type chaîne "Zarvox"
(qui est le nom d'une voix du Mac, attention il faut respecter la
casse !) sont passés à l'Xobjet. Un objet-enfant est
créé qui est stocké dans la variable CRAPO.
La méthode utilisée renvoie un entier code d'erreur
(le premier "i") et exige un argument de type chaîne (le S,
nom d'une voix du Mac). Les dernières lignes retournées
par mDescribe indiquent quelques codes d'erreur. Si tout se passe
bien le résultat est 0
Notre objet CRAPO est maintenant prêt à obéir
à nos instructions. Nous lui passons la méthode mSpeakText
et l'argument de type chaîne "bonjour":
crapo(mSpeakText, "bonjour")
Toujours avec les Xobjets la structure est la suivante : à
l'objet on passe une méthode et ses arguments entre parenthèses.
Ainsi pour connaître le nombre de voix disponibles dans le
dossier "VOICES" du dossier système.
crapo(mcountvoices)
La méthode mCountVoices retourne un entier :
put the result
-- 19
Dix huit voix sont donc disponibles en plus de celle que nous utilisons
actuellement. L'ordre n'est pas fixé. On commence par la
voix courante
crapo(mgetvoicebyindex, 1)
put the result
-- "Zarvox"
puis les autres en remontant la liste par ordre alphabétique
inversé.
put crapo(mgetvoicebyindex, 2)
-- "Whisper"
put crapo(mgetvoicebyindex, 3)
-- "Trinoids"
Pourquoi ne pas changer de voix ?
crapo(msetvoice, "trinoids")
Quel code d'erreur la fonction retourne-t-elle ?
put the result
-- 0
Jouons donc avec cette nouvelle voix
crapo(mspeaktext, "we are the trinoids")
Enfin pour se débarrasser de l'objet CRAPO et libérer
la mémoire :
crapo(mdispose)
Un vérification n'est jamais inutile. Demandons si CRAPO
n'existe plus.
put crapo
-- Void
Si une ressource "dict" est jointe dans le fichier de l'Xobjet
ou dans l'animation, il est possible d'utiliser la commande mUseDictionary
pour l'exploiter. Une ressources dictionnaire inclut une description
phonétique des mots, à l'usage de Speech Manager
Une dernière chose : Speech manager requiert beaucoup de
mémoire et plus encore avec certaine voix non compressées.
La mémoire est prise pour moitié à Director
et pour l'autre à la pile système. attention donc
à ne pas utiliser les services de Speech manager sur des
machines peu dotées. L'xobjet Aspeak est téléchargeable
sur le site ftp Sharedcast : ftp://ftp.sharedcast.com/pub/XObjs/
<
Sommaire
|