Op deze pagina zal ik om te beginnen Vocola kort introduceren. Verder besteed ik hoofdzakelijk aandacht aan mijn eigen ervaringen met Vocola, en aan onderwerpen die niet terug te vinden zijn op o.a. de website van de maker. Hoewel in het Engels, blinkt die site uit door helderheid, en ik vind het (voorlopig) niet veel zin hebben om hier alles nog een keer te reproduceren.
Met Vocola kan je voor elke versie van NaturallySpeaking je eigen commando's maken. NaturallySpeaking zelf biedt vergelijkbare functionaliteit alleen in de zeer dure Professional uitvoering. Vocola is de taal waarin je de commando's schrijft.
Vocola maakt gebruik van Natlink, dat op zijn beurt de programmeertaal Python nodig heeft. Je zal dus 3 pakketten moeten installeren voor je iets met Vocola kan doen, maar Scott Weinstein heeft Natlink en Vocola in 1 installer gecombineerd (momenteel versie 1.3.6 - 7 sep. 2005).
Je kan ook je eigen commando's maken met alleen Natlink, maar dan moet je gaan programmeren in Python. De syntax van Vocola is betrekkelijk eenvoudig, en lijkt in bepaalde opzichten zelfs veel op de vroegere macrotaal van DragonDictate en NaturallySpeaking. De webpagina's van Rick Mohr, de maker van Vocola, leggen de taal bovendien heel duidelijk uit. Daardoor zal deze route voor veel mensen een stuk aantrekkelijker zijn dan Natlink alleen.
Ik ben zelf recent begonnen met het uitproberen van Vocola, en zal zolang ik daar mee doorga hier de resultaten van mijn experimenten weergeven.
De
2-in-1 installer (Natlink en Vocola)
staat op de site van Scott Weinstein.
Ik heb deze zonder problemen geinstalleerd op een Windows XP systeem.
De Natlink
map wordt in dit geval standaard onder
Program Files
gecreeerd.
In oudere (pre-installer tijdperk) versies is Natlink een Zip-file die
je kan uitpakken naar een willekeurige plek.
In sommige gevallen moet je voor het uitvoeren van de installer handmatig een paar files verwijderen.
Gebruik een Python versie lager dan 2.4 en minimaal 2.0. 2.4 werkt niet, omdat Natlink en Vocola C modules gebruiken, die voor elke nieuwe Python versie opnieuw gecompileerd moeten worden.
Om te zien of Python al geinstalleerd is, en zo ja, welke
versie, kan je het beste klikken op Start - Uitvoeren (Run), dan
cmd
intikken (of als dat niet werkt
command
) gevolgd door Enter, en dan
python
en Enter.
Als Python al op het systeem zit zou er dan iets moeten komen als
ActivePython 2.2.1 Build 222 (ActiveState Corp.) based on
Python 2.2.1 (#34, Apr 15 2002, 09:51:39) [MSC 32 bit (Intel)] on win32
Soms is het bij de installatie belangrijk om te weten of Vocola/Natlink al geinstalleerd is, en zo ja, welke versies. Er zijn 2 methodes:
...\NatLink\Vocola\Exec
zit de file
vcl2py.pl
.
Waarschijnlijk vrij kort na regel 50 staat in dat bestand de regel
$VocolaVersion = ...
Als je tijdelijk geen gebruik wilt maken van Vocola kan je
De installer zet tegenwoordig het programma
ConfigureNatLink.exe
in de map
...\NatLink
.
Dit programma laat o.a. de versie van Natlink en Vocola zien.
Vocola commando's zet je in een .VCL file.
De filenaam zonder extensie
(het gedeelte voor de punt) moet gelijk zijn aan de naam van de .EXE file van
programma, en is niet noodzakelijkerwijs ook hetzelfde als de programmanaam.
De executable van Kladblok is bv. (ook in Nederlandstalige Windows versies)
Notepad.exe
, en Vocola commando's staan dus in
Notepad.VCL
(hoofdletters spelen
geen rol, maar heb ik gebruikt voor leesbaarheid).
De .VCL files komen te staan in de map
...\Natlink\Vocola\Commands
.
Als het venster van een programma actief is (titelbalk blauw),
dan kan je de bijbehorende .VCL file oproepen m.b.v. het commando 'Edit commands'.
Als de .VCL file nog niet bestond wordt hij op dat moment aangemaakt.
.VCH files (H staat voor header) bevatten commando's die je vanuit meerdere .VCL files wilt kunnen gebruiken. Als je onderdelen uit een .VCH file aanroept moet je in de .VCL file een Include commando opnemen.
Alle mogelijkheden van de taal worden beschreven op de pagina's van het Language Tutorial.
Kant-en-klare Vocola macro's voor allerlei produkten kan je downloaden (of
plaatsen) op de
Speech Wiki.
Ik denk echter dat veel van de (Engelstalige) commando's niet zullen werken in
Nederlandse gebruikers.
Je kan ze echter wel gebruiken om te bestuderen hoe je zelf commando's kan maken.
Dat geldt ook voor de voorbeeldmacro's in de map
...\Natlink\Vocola\Samples
.
Ik had Python en Natlink al op mijn thuis- en werk-systemen, en heb Vocola (versie 2.4) geinstalleerd volgens het stappenplan van Rick Mohr. Inmiddels is er ook een versie 2.5 beschikbaar.
Als editor voor de .VCL files (en bijna alle talen waarin ik programmeer) gebruik ik de zeer plezierige (gratis) editor PSPad. Verschillende soorten onderdelen van een taal (zoals commentaar, keywords, strings, etc.) worden in een eigen kleur weergegeven. Maar dat terzijde.
Toen ik op mijn werk de file met globale commando's
(_vocola.vcl
)
vanuit de Samples
map naar de
Commands
map kopieerde
en een commando gaf, stond de harde schijf
wel 5 minuten aan 1 stuk door te ratelen (ik heb daar 256 MB memory,
dat normaal nooit helemaal vol zit).
Waarschijnlijk is dit het gevolg van het soort grammatica's dat gebruikt
wordt, in combinatie met een
bug in DNS 7 en 8.
Je kan in commando's gebruik maken van omgevingsvariabelen, zoals
%system32%
.
Ik heb in mijn Windows-omgeving een aantal
variabelen gedefinieerd voor standaardmappen, bv.
%Tools%=D:\Tools
(je kan dat o.a. doen via SET-commando's in AUTOEXEC.BAT
).
Het voordeel is dat ik vanuit programma's, scripts e.d.
mijn Tools-map op al mijn PC's op dezelfde manier kan
benaderen (via %Tools%
),
ook al staat hij bv. op mijn werk en thuis op een
andere plaats.
Als je in een VCH-file zet
<folder> := (Tools = %Tools%);
dan kan je in een VCL-file zeggen (als je tenminste een 'include' hebt gedaan
van de VCH-file)
Folder <folder> = {Alt+x}g $1 {Enter};
en met het commando
Folder Tools
de bewuste map openen in Verkenner (de gebruikte toetscombinatie is afgestemd op
de Nederlandstalige versie van Explorer).
Soms is het handig om gegevens mee te kunnen nemen van een commando naar het volgende commando. Voorbeeld: je hebt een website over planten, met voor elke plant 3 pagina's, 1 met foto's, 1 met een beschrijving, en 1 met de geneeskrachtige werking. De pagina's heten bv. longkruid-foto, longkruid-info en longkruid-geneeskracht. Je moet regelmatig alle pagina's over een plant bijwerken, en wilt dan zeggen 'Kies plant longkruid', gevolgd door 'Bewerk pagina foto', 'Bewerk pagina info', etc. De naam van de plant blijft bewaard tot je een nieuw 'Kies plant'-commando geeft, en wordt door de 'Bewerk pagina ...'-commando's gebruikt om de goede paginanaam te genereren.
In Natlink schijnt dit gemakkelijk te kunnen, maar Vocola kent geen state.
Er is (met dank aan Rick Mohr) wel een omweg.
Neem in de VCL file van de browser de volgende code op:
include plant.vch;
Kies plant (holwortel | monnikspeper | longkruid) =
ShellExecute("plant.bat $1")
HeardWord("Load","Voice","Commands");
Bewerk pagina foto = plant() "-foto";
Bewerk pagina info = plant() -info; # Werkt ook zonder quotes
Het ShellExecute
commando roept een batch file aan
met als parameter de gekozen plant
(waarbij ik er van uit ga dat je map met batch files in het zoekpad zit).
De batch file
echo plant():=%1;>"d:\Natlink\Vocola\Commands\plant.vch"
genereert een 1-regelige include file met
als inhoud het Vocola commando (afhankelijk van de gekozen plant):
plant():=longkruid;
De betekenis van deze regel is, dat
een aanroep van de functie plant
als output
longkruid
levert.
De functie wordt in de 'Bewerk pagina ...'-commando's aangeroepen.
Met Load Voice Commands
wordt de include file
geladen (dat gebeurt, in tegenstelling tot VCL files, niet spontaan).
Door problemen met bepaalde (recursieve) grammatica's in combinatie met een bug in DNS 7 en 8 kan het herkennen van commando's ongelooflijk veel tijd kosten.
Opl.: als je Perl op je systeem geinstalleerd hebt kan je de volgende bestanden wijzigen:
...\Natlink\MacroSystem\_vocola_main.py
de variabele usePerl
op 1;
emit
)
van ...\Natlink\Vocola\Exec\vcl2py.pl.
In Vocola 2.5 (ik gebruik 2.4) zijn de wijzigingen uit bovenstaande alinea de default.