Vocola (VOice COmmand LAnguage)

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.


Wat is het?

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.

Naar het begin van de pagina


Installatie

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.

Python versie

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

Vocola versie

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 uitschakelen

Als je tijdelijk geen gebruik wilt maken van Vocola kan je

Naar het begin van de pagina


Configuratie

Naar het begin van de pagina


Gebruik van Vocola

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.

Naar het begin van de pagina


Mijn ervaringen

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.

Fouten die ik soms (regelmatig) maak

Naar het begin van de pagina


Interessante mogelijkheden

Omgevingsvariabelen (environment variables)

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).

Het bewaren van je toestand (maintain state)

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).

Naar het begin van de pagina


Bekende problemen

DNS 7 en 8 worden supertraag door bepaalde grammatica's

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:

In Vocola 2.5 (ik gebruik 2.4) zijn de wijzigingen uit bovenstaande alinea de default.

Naar het begin van de pagina


Valid XHTML 1.0!

© Henk Dalmolen
Reageer via E-mail (dalmolen@xs4all.nl)

Deze pagina is voor het laatst gewijzigd op: 7-9-2005 12:01:51