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/
|