KATHOLIEKE

UNIVERSITEIT

LEUVEN

 

 

Faculteit Economische en

toegepaste economische wetenschappen

Departement Toegepaste economische wetenschappen

 

 

 

 

 

De haalbaarheid van spraakherkenning voor de administratie in de welzijnssector

Tom Kirsch

Verhandeling aangeboden tot

 het behalen van de graad van

Handelsingenieur in de beleidsinformatica

Promotor : Prof. Dr. J. Vanthienen

 

 

 

 

- 2000 -


 


Faculteit Economische en

toegepaste economische wetenschappen

Departement Toegepaste economische wetenschappen

 

 

 

 


KATHOLIEKE

UNIVERSITEIT

LEUVEN

 

Tom Kirsch

 

 

De haalbaarheid van spraakherkenning voor de administratie in de welzijnssector

Korte Inhoud Verhandeling:

Een tekst van  ±  10 lijnen

Promotor : Prof. Dr. J. Vanthienen

- 2000 -


Dankwoord

 


Inhoudsopgave

Algemene Inleiding.............................................................................. 1

Hoofdstuk 1     Kritieke Succes Factoren............................................ 4

1.1       Technologische aspecten voor het gebruik van spraakherkenning.......................... 6

1.1.1        Bepaling vande betrokken industrie.............................................................. 6

1.1.2        Strategisch voordeel.................................................................................... 7

1.1.3        IT en coördinatie......................................................................................... 8

1.1.4        Opleiding.................................................................................................... 9

1.1.5        Besluit....................................................................................................... 10

1.2       Organisatorische aspecten voor het gebruik van spraakherkenning:..................... 10

1.2.1        Software-ontwikkelaar.............................................................................. 11

1.2.2        Eindgebruiker............................................................................................ 14

1.2.3        Documentatie............................................................................................ 17

1.3       Succes en haalbaarheid van spraakherkenning in de praktijk: marktvoorspelling.. 17

1.4       Synthese........................................................................................................... 20

Hoofdstuk 2     Algemene principes van spraakherkenning.............. 21

2.1       Taak van een spraakherkenner.......................................................................... 21

2.2       Hoe werkt spraakherkenning?........................................................................... 22

2.2.1        Codering door een analoog-digitaalconversie............................................. 23

2.2.2        Transformaties.......................................................................................... 25

2.2.3        Bepalen van de waarschijnlijkheden........................................................... 30

Hoofdstuk 3     Nederlandstalige spraakherkenners.......................... 40

3.1       Philips Speechmagic v 3.1................................................................................. 40

3.1.1        Processen in Speechmagic......................................................................... 41

3.1.2        Lifecycle van een citaat.............................................................................. 44

3.1.3        ActiveX Componenten.............................................................................. 44

3.2       Lernout & Hauspie Voice Xpress 4 SDK.......................................................... 45

3.2.1        Processen in Voice Xpress........................................................................ 46

3.2.2        ActiveX componenten............................................................................... 46

3.3       Uiteindelijke keuze............................................................................................ 48

Hoofdstuk 4     Toepassing : spraakherkenning voor pakketten van ACC.     49

4.1       ACC................................................................................................................ 49

4.2       Taaltechnologie en ACC-software..................................................................... 51

4.3       Medisch dossier................................................................................................ 52

4.3.1        Waarvoor dient ‘Medisch Dossier’?.......................................................... 53

4.3.2        Hoe en waar kan spraakherkenning gebruikt worden................................. 55

Hoofdstuk 5     Proefproject in Delphi.............................................. 58

5.1       Stand-alone installatie........................................................................................ 58

5.1.1        Hardware................................................................................................. 58

5.1.2        Installatie................................................................................................... 58

5.1.3        Configuratie.............................................................................................. 59

5.1.4        Delphi-applicatie....................................................................................... 60

5.1.5        Besluit voor de Stand-alone installatie........................................................ 66

5.2       Gedistribueerd systeem..................................................................................... 66

5.2.1        Hardware................................................................................................. 66

5.2.2        Installatie................................................................................................... 66

5.2.3        Configuratie.............................................................................................. 67

5.2.4        Toepassingen............................................................................................ 68

5.3       Herkenning....................................................................................................... 69

5.4       Besluit............................................................................................................... 71

Hoofdstuk 6     Programmeren van spraakherkenning in ‘Medisch Dossier’ 72

6.1       Oracle Forms.................................................................................................... 72

6.2       Voorafgaande problemen.................................................................................. 72

6.3       Forms en ActiveX............................................................................................. 73

6.3.1        Polling methode......................................................................................... 75

6.3.2        Visual Basic.............................................................................................. 77

6.4       Besluit............................................................................................................... 79

 


Algemene Inleiding

 

De laatste vijftien jaar heeft de informatizering in onze maatschappij een onontkenbaar hoge vlucht genomen. Een belangrijke vraag bij deze steeds voortschrijdende informatizering is die naar het praktisch nut van de nieuw ontwikkelde technologieën. Voor spraaktechnologie is deze vraagstelling zeker uitermate belangrijk. Reeds een paar jaar kent de Vlaamse reus op dit gebied, Lernout & Hauspie, een ontzettend groot succes. Dit kan enigszins verbazingwekkend lijken, aangezien er momenteel nog steeds geen sprake kan zijn van een wijd verbreid gebruik van deze technologie. De vraag rijst dan ook of het gigantische succes van de spraaktechnologie misschien een speculatieve luchtbel zou kunnen zijn.

 

In deze context loont het zeker de moeite om eens in concreto te onderzoeken hoe ver het nu staat met de praktische toepassing van deze nieuwe technologie. Op lange termijn lijkt het evident dat spraaktechnologie een vernieuwing zal teweeg brengen in de manier waarop de gebruiker omspringt met informatica: voor de meeste mensen is spreken een heel natuurlijke vorm van communicatie. Bijgevolg lijkt – vanuit het standpunt van de gebruiker – spraak de aangewezen manier om een computer te bedienen.

 

Vandaag de dag beginnen de eerstre praktische toepassingen het levenslicht te zien. Eén van de eerste sectoren waar spraaktechnologie zijn nut kan bewijzen blijkt de medische sector te zijn. Hiervoor bestaan tal van redenen: een gezonde welzijnszorg vergt een gigantisch administratief apparaat, waar elke tijdsbesparing van pas komt. Een andere, technische reden is de zeer specifieke woordenschat die in de medische sector gebruikt wordt. Deze specifieke woordenschat maakt de medische, of algemener de hele welzijnssector, uitermate geschikt voor spraaktechnologie.

 

Daarom zullen we ons in deze thesis, wars van enige hoogdravendheid omtrent de toekomstige mogelijkheden van spraaktechnologie, concentreren op de haalbaarheid van spraaktechnologie in zijn meest concrete toepassing: de welzijnssector. Hiervoor gingen wij te rade bij een informatica-bedrijf dat al jaren software levert aan de welzijnssector. Sinds enige tijd poogt deze onderneming, ACC, spraaktechnologie te integreren in de softwarepakketten die zij aan de welzijnssector levert. Deze benadering werpt een zeer interessant licht op de mogelijkheden en moeilijkheden van het concreet gebruik van spraaktechnologie.

 

Om een heldere uiteenzetting te geven van dit onderwerp zullen we eerst enkele aandachtspunten bij de implementatie van spraakherkenning analyseren aan de hand van Kritieke Succes Factoren. Hierbij zullen we ons vooral baseren op enkele artikels die de Kritieke Succes Factoren van andere nieuwe technologieën toelichten. Een belangrijk onderscheid dat gemaakt zal worden is dat tussen de ontwikkelaar van applicaties die spraakherkenning gebruiken en de uiteindelijke gebruiker van het spraakherkenningssysteem. Voor ACC is vooral het ontwikkelen van applicaties van belang. Het standpunt van de eindgebruikers wordt hier ingenomen door de administratie in de welzijnssector.

 

In een tweede hoofdstuk worden de algemene principes van spraakherkenning uitvoerig uitgelegd. Vele linguïsten ten spijt is spraakherkenning vooral een kwestie van statistische berekeningen. Technisch gezien bestaan er enorm veel algoritmes en modellen om spraak om te zetten naar tekst. De lezer zal in dit hoofdstuk dan ook een overzicht krijgen van de verschillende stappen die er nodig zijn om een gesproken signaal om te zetten in een reeks woorden. In een derde hoofdstuk zal er bij de bespreking van Nederlandse spraakherkenners vaak naar deze modellen verwezen worden.

 

Dit derde hoofdstuk gaat dieper in op de technische werking van de twee spelers op de markt van de Nederlandse spraakherkenners: Philips SpeechMagic en Lernout & Hauspie Voice Xpress. Aangezien de keuze van een van deze producten vooral zal afhangen van de integratiemogelijkheden van deze softwarepakketten in een bestaande applicatie, zullen in dit hoofdstuk vooral de workflowintegratie en de mogelijkheden van een integratie van de spraakherkenners in een bestaande applicatie onderzocht worden. De uiteindelijke keuze van een van deze twee producten zal bepalen welk product gebruikt zal worden voor het pilootproject dat in de laatste twee hoofdstukken zal beschreven worden.

 

Om een beeld te krijgen van het toepassingsgebied voor het pilootproject, zal in het vierde hoofdstuk een overzicht van het software-aanbod van ACC gegeven worden. Het softwarepakket van ACC dat in aanmerking komt om uitgebreid te worden met spraakherkenning heet ‘Medisch Dossier’. In dit hoofdstuk zal de functionaliteit van ‘Medisch Dossier’ uitgelegd worden en wordt het pakket gesitueerd binnen het aanbod van ACC.

 

De twee laatste hoofdstukken tenslotte beschrijven op een technische manier het verloop van het pilootproject dat in samenwerking met ACC werd opgezet. De verschillende problemen en aandachtspunten bij de implementatie van een spraakherkenniner en het verloop van het project komen hier aan bod. Voor sommige problemen werden verschillende oplossingen uitgewerkt zodat er later, afhankelijk van ontwikkelingsomgeving en van de configuraties een juiste oplossing kan gekozen worden.

 

Hoofdstuk vijf geeft het projectverloop voor een stand-alone installatie en een gedistribueerde installatie. De ontwikkelingsomgeving die ineerste intantie gebruikt werd om de integratie van de spraakherkenner te testen was Delphi. Hoofdstuk zes gaat dan over het verloop van de programmatie zoals die in samenwerking met ACC werd uitgevoerd. De ontwikkelingsomgeving bij ACC was Oracle Forms.

 


Hoofdstuk 1     Kritieke Succes Factoren

 

Kritieke Succes Factoren kunnen worden beschouwd als methoden om te komen tot de tegenwoordig zo noodzakelijk geachte niet-financiële indicatoren.[1] Deze niet-financiële factoren geven aan welke factoren “leading” zijn voor het behalen van een goed resultaat. In de welzijnssector primeert de kwaliteit van de verleende diensten dikwijls op de financiële  aspecten van de dienstverlening. Dit maakt het gebruik van kritieke succesfactoren bij uitstek geschikt om de haalbaarheid van een nieuwe technologie in deze sector te evalueren. Daarom geven we in dit hoofdstuk een overzicht van de Kritieke Succes Factoren die de implementatie van een nieuwe technologie in de welzijnssector beïnvloeden. Aangezien het concrete project dat wij gevolgd hebben specifiek gericht was op de medische sector, zal in dit hoofdstuk het onderzoeksgebied beperkt worden tot de medische sector.

 

Een artikel van Saxena en Wagenaar over de EDI Technology Transfer biedt een interessant conceptueel kader voor de bespreking van de Kritieke Succes Factoren. Een eerste benaderingswijze kan volgens dit artikel vertrekken vanuit de breedte waarop de nieuwe technologie gebruikt wordt. Deze benadering in de breedte onderzoekt hoe een nieuwe technologie ingevoerd kan worden in een hele industrie of in een specifiek bedrijf. Een tweede benaderingswijze gaat uit van een opdeling in de diepte, waar men de implementatie van EDI op twee manieren bekijkt: een eerste manier legt de nadruk vooral op de technologie die gebruikt wordt en de technische aspecten, de tweede manier kijkt dan eerder naar de organisatorische aspecten van de implementatie van EDI.

 

De structuur van dit artikel kan ook hier gebruikt worden om de Kritieke Succes Factoren voor de integratie van spraakherkenning te behandelen. Uiteraard bestaat er een belangrijk verschil tussen EDI en spraakherkenning, namelijk dat het succes van EDI afhangt van de gelijktijdige implementatie door verschillende gebruikers. Dit is niet steeds het geval voor spraakherkenning. Om die reden worden bepaalde niveaus uit de breedte- en diepteopdeling hier buiten beschouwing gelaten en wordt de opdeling doorgevoerd tussen de technische en de organisatorische aspecten. Het gaat hier vooral om de analyse van de in gebruikname van een nieuwe informatica-technologie. Zowel op het technologisch als op het organisatorisch niveau van een specifiek bedrijf, zijn er voldoende overeenkomsten tussen EDI en spraakherkenning om deze structurering te verantwoorden. Beide nieuwe technologieën impliceren namelijk een verandering van de gangbare manier van communiceren binnen een bedrijf.

 

Ook in een ander artikel over videoconferencing (Jane Webster, 1998) vinden we de hierboven voorgestelde opdeling enigszins terug:

 

Research in systems analysis and design helps highlight those factors that are important in ensuring the acceptance of new systems (Laudon and Laudon 1995). Within this theoretical perspective, two competing theories, innovation characteristics theory and implementation process theory, have helped to explain the adoption of new technologies. Innovation characteristics theory assumes that individuals adopt technologies to perform individual tasks and therefore that technologies need to be designed with the correct characteristics for these individuals, while implementation process theory assumes that groups perform interdependent tasks and therefore that managerial effort needs to focus on the process of implementation (Yetten et al. 1997).

 

Net zoals bij EDI is het succes van een implementatie van videoconferencing afhankelijk van verschillende gebruikers. Ook hier kan echter het argument aangehaald worden dat beide technologieën een veranderde manier van communicatie teweeg brengen. In de volgende paragrafen zal er dus aan de hand van  beide artikels een bespreking volgen van de Kritieke Succes Factoren die ook van toepassing zijn op spraakherkenning.

 

In een laatste deel van dit hoofdstuk wordt er concreter ingegaan op de marktvoorspellingen voor de integratie van spraakherkenning.

 

1.1        Technologische aspecten voor het gebruik van spraakherkenning

1.1.1       Bepaling vande betrokken industrie

Een industrie moet hier gezien worden als een verzameling bedrijven die allen dezelfde goederen of diensten leveren, of substituten van deze goederen of diensten. De grenzen worden dus bepaald op het niveau van de eindgebruiker. De potentiële voordelen van een nieuwe technologie variëren sterk tussen de verschillende industrieën en tussen productiebedrijven en dienstenbedrijven. Zo leent spraakherkenning zich uitstekend tot toepassingen in de welzijnssector, of specifieker in de medische sector, gezien het beperkte en specifieke vocabularium dat in deze sector gehanteerd wordt. Het is logisch dat de herkenning van een beperkte set woorden voor een computer eenvoudiger verloopt dan de herkenning van een breed en uitgebreid woordgebruik. Niet alleen stijgt de accuraatheid van de herkenning wanneer het aantal mogelijk te herkennen woorden kleiner wordt, ook de berekeningen worden eenvoudiger, hetgeen dan weer minder rekenkracht vergt van de computer. Bovendien leert de communicatietheorie ons dat de informatiedichtheid van een woord stijgt naarmate de kans van gebruik van dat woord daalt. Hiervoor wordt het begrip entropie gehanteerd (J. Vanthienen, 1999)[2].

 

Dit alles leidt ertoe dat administratie in de medische sector veel meer nut kan ondervinden van de ontwikkelingen in de spraaktechnologie dan meer globale toepassingsdomeinen zoals bijvoorbeeld de administratie van managementfuncties. Gezien de snelheid van de technologische veranderingen in de medische gegevensverwerking, is voor vele ontwikkelaars van software voor medische doeleinden, een uitbreiding van hun producten met spraakherkenning noodzakelijk om hun positie op de markt te behouden. Naast deze concurrentiële drijfveer is ook de klantenvraag één van hoofdredenen tot integratie van spraakherkenning. Vanuit het standpunt van de klant is tegelijkertijd de noodzaak voelbaar om deze technologische ontwikkelingen op te volgen.

Het is dan ook niet verwonderlijk dat er momenteel in de administratie van de medische sector volop geëxperimenteerd wordt met spraakherkenning. Vele ontwikkelaars van medische softwarepakketten gaan, op impliciete vraag van hun klanten, hun pakketten uitbreiden met spraakherkenning.

 

1.1.2       Strategisch voordeel

Los van de specifieke industrie die men gaat bekijken, zal elke nieuwe technologische toepassing bijna altijd een strategisch doel hebben. Het uitstippelen van een strategie gaat automatisch gepaard met een analyse van de huidige bedrijfsomgeving en de mogelijkheden van een nieuwe toepassing in die omgeving. Uit deze analyse volgt dan logischerwijze het tactisch en operationeel plan.

 

De huidige bedrijfsomgeving kan men volgens Saxena en Wagenaar (1994) karakteriseren door een hoge velocity, equivocality en een niet-lineariteit.[3] Omgevingen met hoge velocity zijn omgevingen waar er snelle en onregelmatige veranderingen optreden en die sterk afhankelijk zijn van een veranderende wetgeving. Equivocality betekent dat er in een bedrijfsomgeving gewerkt wordt waar zeer veel informatie vereist is. In de meeste gevallen zijn er meerdere en conflicterende interpretaties mogelijk van een bepaalde situatie. Met de niet-lineariteit van de omgeving wordt bedoeld dat zowel de interne bedrijfsrelaties als de relaties met de buitenwereld zeer complex en dus moeilijk te voorspellen zijn.

 

In zulke omgevingen is het absoluut noodzakelijk om de opkomende veranderingen tijdig te ontdekken en snel te interpreteren. Het huidig gebruik van spraaktechnologie kan men in deze context dan ook beschouwen als een tijdig inspelen op veranderingen in de evoluerende informatisering. Ondanks het feit dat spraakherkenning nog niet volledig op punt staat, heeft een dadelijke onderkenning van de mogelijkheden van spraakherkenning een hoge toekomstwaarde. Dit laat toe dat ondernemingen, die reeds ervaring hebben met spraakherkenning en nieuwe technologieën in het algemeen, voordeel halen uit de reeds opgedane ervaringen. Algemener kan men dit omschrijven als de indirecte voordelen die men haalt uit het gebruik van nieuwe technologieën.

 

Toegepast op medische software, blijkt dat zowel de leverancier van de software als de uiteindelijke gebruiker gediend zijn met een innovatieve, strategische visie. Hier dient wel opgemerkt te worden dat de uiteindelijke strategische doelen van beide partijen duidelijk verschillen.

 

Uit het oogpunt van de applicatie-ontwikkelaar is het uiteindelijke strategische doel de continuïteit van de onderneming. Middelen om deze continuïteit te garanderen zijn winstmaximalisatie en hiermee gepaard gaand, de concurrentiële positie. Innovatie en het up-to-date houden van de software zijn dan op hun beurt noodzakelijke vereisten om de concurrentiële positie van een softwarebedrijf te behouden.

 

De eindgebruiker van de medische software van zijn kant heeft als strategisch hoofddoel het leveren van gezondheidszorg. In deze sector speelt het behouden van de concurrentiële positie dan ook een ondergeschikte rol aan het maatschappelijk doel een efficiënte verzorgingsdienst te verschaffen. Het hoeft geen verwondering te wekken dat nieuwe technologieën ook voor het bereiken van dit doel een grote bijdrage kunnen leveren.

 

1.1.3       IT en coördinatie

Sectoren die reeds sterk geïnformatiseerd zijn, zijn uiteraard veel geschikter voor nieuwe technologieën zoals spraakherkenning. Zoals de technologie van de spraakherkenning er momenteel voorstaat, zullen stand-alone systemen voor spraakherkenning nog wat op zich laten wachten. Het inbouwen van spraakherkenning in een bestaande workflow is technisch wel realiseerbaar, op voorwaarde dat de informatie-omgeving duidelijk afgelijnd is. Enkel dan kunnen enkele welbepaalde fasen van de informatieverwerking door middel van spraakherkenning gebeuren. Dit vereist uiteraard een gestructureerd en gecoördineerd informatiebeleid. Verder is het ook noodzakelijk dat er duidelijk kan aangegeven worden welke taken beïnvloed zullen worden door een nieuwe technologie zoals spraakherkenning. Eenmaal deze taken bepaald zijn, kan er per taak nagegaan worden welke veranderingen er zullen optreden. Op die manier is het mogelijk de eindgebruiker duidelijk te informeren over de wijzigingen die zijn taak zal ondergaan.

 

Bekijken we de praktische implementatie van spraakherkenning, dan is een groot voordeel dat er voor een deel van de eindgebruikers in de medische sector weinig of geen verandering optreedt. Zo maakt het voor een dokter bijvoorbeeld niet uit hoe zijn gedicteerd rapport uiteindelijk wordt omgezet in een uitgeschreven rapport. De zogenaamde user-acceptance is hier dan ook 100%. Voor de administratieve verwerking van zo een rapport kan er wel een nieuwe manier van werken ontstaan, en er moet dan ook eerst grondig onderzocht worden welke de gevolgen zullen zijn van deze nieuwe technologie, en vooral in welke mate die nieuwe technologie aanvaard en gebruikt zal worden.

 

1.1.4       Opleiding

De specifieke industrietak en IT infrastructuur bepalen in welke mate de integratie van spraakherkenning in een bestaand systeem succesvol zal zijn. Het belangrijkste is echter het daadwerkelijk gebruik van spraakherkenning en de tijdswinst die daarmee gerealiseerd kan worden. De eindgebruiker moet er zich ten volle van bewust zijn dat een spraakherkenner pas na langdurige training echt goede resultaten levert. Indien deze bewustmaking niet gebeurt, kan de eindgebruiker ontgoocheld raken bij een eerste gebruik van het systeem, met als gevolg dat hij het nut van het uitgebreid systeem uit het oog verliest.

 

Het kan hier interessant zijn het in het artikel van Jane Webster (1998) aangehaalde verschil tussen de betrouwbaarheid van een systeem en het gebruik ervan te vermelden. De meeste mensen zouden verwachten dat hoe hoger de betrouwbaarheid van een systeem is, hoe meer het gebruikt wordt. Nochtans is uit een onderzoek van Goodhue en Thompson (1995) gebleken dat er een negatieve correlatie tussen beide factoren bestaat. Zij verklaren deze opmerkelijke bevinding door het feit dat mensen die een systeem veel gebruiken, ook veel gefrustreerder raken wanneer het systeem niet werkt. Deze mensen zullen het systeem dan ook veel gemakkelijker als onbetrouwbaar evalueren. Het kan belangrijk zijn rekening te houden met deze relatie bij het gebruik van een spraakherkenningssysteem.

 

Zoals reeds vermeld in de vorige paragraaf maakt het bepaalde personen soms niet uit wat er gebeurt met hun dictaat. Toch lijkt het noodzakelijk ook deze mensen goed op de hoogte te houden van de ontwikkelingen en veranderingen die er plaatsvinden bij de implementatie van spraakherkenning. Zo zal een arts na het inspreken van een rapport er soms toch belang bij hebben het verwerkingsproces van zijn rapport na te kunnen gaan, ook al zag hij daar aanvankelijk het nut niet van in.

 

Een ander aandachtspunt is de werkwijze die volgt uit het gebruik van een spraakherkenner. Zo komen sommige taken, gezien hun karakter, eenvoudigweg niet in aanmerking voor spraakherkenning. Het is bijvoorbeeld denkbaar dat een samenvatting van een medisch verslag beter wordt ingegeven met een toetsenbord, dan met een spraakherkenner.  De ingave met het toetsenbord laat de gebruiker in dit geval toe om zijn gedachten beter te ordenen, waar dat bij het rechtstreeks inspreken van de samenvatting soms voor moeilijkheden kan zorgen. De persoonlijke voorkeur van de eindgebruiker moet hier de doorslag geven om te beslissen of er al dan niet spraakherkenning zal gebruikt worden.

 

1.1.5       Besluit

Samenvattend kan men stellen dat de strategie een doel geeft aan het gebruik van spraakherkenning, de technische infrastructuur geeft de mogelijkheid tot implementatie en de opleiding biedt de nodige kennis om spraakherkenning te gebruiken. Om succes te garanderen moeten deze drie aspecten gecoördineerd worden en daarom is ook de coördinatie een belangrijk onderdeel van de implementatie.

 

1.2        Organisatorische aspecten voor het gebruik van spraakherkenning:

Zoals in het eerste deel reeds gezegd, moet men voor het bepalen van de succesfactoren van spraakherkenning het onderscheid maken tussen de producenten van de spraakherkenningssoftware en de afnemers of de eindgebruikers ervan. Dit verschil vormt een eerste onderverdeling in deze paragraaf. Verder dient er op organisatorisch niveau ook een onderscheid gemaakt worden tussen de verschillende fasen van de integratie van spraakherkenning. Een eerste fase is de ontdekkingsfase en de kritieke factoren in deze fase houden meestal verband met de waarde die het management aan spraakherkenning geeft. De tweede fase is de operationele fase. In deze fase is enerzijds de betrokkenheid van het management bij het project zeer belangrijk en anderzijds behoeft de houding van de afnemers van de software voldoende aandacht. De laatste fase die zal bekeken worden, is de strategische fase.

 

1.2.1       Software-ontwikkelaar

1.2.1.1       Ontdekkingsfase

Volgende factoren moeten op het niveau van de organisatie onderscheiden worden in deze eerste fase:

 

a)      Bedrijfsvisie
De uitbreiding van een toepassing met spraakherkenning moet passen binnen de algemene bedrijfsvisie. Het doel is dan een duurzaam concurrentiëel voordeel te realiseren.

b)      Kosten en baten van de implementatie      
Een uitgebreide schatting van de kosten en de baten van het project dient uitgevoerd te worden tijdens de ontdekkingsfase. Bij de interpretatie van deze analyse dient er echter rekening gehouden te worden met de indirecte opbrengsten van het project en de toekomstige concurrentiële positie die hieruit voortvloeit.

c)      Top Management    
Het is ook absoluut noodzakelijk het top management te overtuigen van de haalbaarheid van het project. De kansen van het welslagen van het project zijn in grote mate afhankelijk van de motivatie van het top management. Als het top management het project zelf initieert, neemt de slaagkans van het project drastisch toe.

d)      Opleiding
In sommige gevallen kan het nuttig zijn om bepaalde mensen, die actief betrokken zullen zijn bij het project, een opleiding te laten volgen. Zij kunnen dan optreden als experts met betrekking tot spraakherkenning en hebben liefst de nodige technische achtergrond om applicaties te ontwikkelen.

 

1.2.1.2       Operationele fase

Deze fase volgt na een beslissing tot gebruik van spraakherkenning. Meestal bestaat zij uit het opzetten van een pilootproject. Volgende punten verdienen aandacht:

 

a)      Implementatie
Spraakherkenning is een vrij nieuwe technologie en het kan soms moeilijk zijn om mensen te vinden die voldoende kennis van deze technologie hebben. Dit probleem wordt nog eens benadrukt door het feit dat spraakherkenning nog steeds in volle evolutie is en dus nog steeds verandert. Vele ondernemingen beginnen dan ook met een pilootproject om de mogelijkheden van spraakherkenning te testen, maar verliezen de verdere ontwikkelingen uit het oog. Het parallel laten lopen van het pilootproject met de bestaande software kan zeer nuttig zijn, maar er dient dan wel op gelet te worden dat de concrete overstap tijdig gemaakt wordt. Door de twee projecten samen te laten lopen, loopt men namelijk soms het gevaar te lang het oude systeem te gebruiken, zonder dat de eindgebruiker gedwongen wordt het nieuwe product te gebruiken. Door snel genoeg over te schakelen naar de nieuwe implementatie kan dit euvel vermeden worden.

b)      Betrokkenheid van het management         
De betrokkenheid van het management in de ontdekkingsfase is absoluut noodzakelijk om de nieuwe technologie te initiëren. Het belang van deze betrokkenheid neemt tijdens de operationele fase zeker niet af, maar uit zich vooral door het ter beschikking stellen van middelen en de operationele steun aan het project door het management.

c)      Leiderschap voor het project          
Een minstens even belangrijke factor als de betrokkenheid van het management voor het welslagen van het project, is de interne motivatie en steun die het project krijgt. Het projectteam moet bestaan uit verschillende vertegenwoordigers uit de verschillende functionele afdelingen. Al deze mensen komen dan onder het leiderschap van een enthousiaste en bekwame projectleider, die de markt goed kent en nauwe relaties met de klanten onderhoudt.

d)      Marketing activiteiten        
Goede marketing activiteiten hebben een dubbel doel: ze kunnen er ten eerste toe leiden dat de bestaande klanten een upgrade doorvoeren van hun bestaande applicaties. Dit komt de klantentevredenheid zeker ten goede. Ten tweede kunnen er met aangepaste marketingactiviteiten nieuwe klanten aangetrokken worden. Het is belangrijk dat de marketingactiviteiten pas starten in de operationele fase, zodat het mogelijk is om (potentiële) klanten een demonstratie van de spraakherkenner te geven. Het pilootproject kan dan bijvoorbeeld dienen als demoversie voor deze klanten.

 

1.2.1.3       Strategische fase

Zoals reeds vermeld bij de technische benadering van de strategische succesfactoren, heeft de uitbreiding van een softwarepakket met spraakherkenning een strategisch doel. Dit is zeker zo voor de software-ontwikkelaar, die uiteindelijk zijn product wil verkopen en zijn marktpositie wil behouden. Volgende punten verdienen extra aandacht om de strategische doeleinden van de organisatie te realiseren:

 

a)      De Productmix         
In welke mate is de uitbreiding met spraakherkenning binnen een bestaande lijn van softwareproducten wenselijk om aan productdifferentiatie te doen? Afhankelijk van de concrete toepassing die uitgebreid wordt, moet er gekeken worden hoe de productlijn van de software-ontwikkelaar er uit ziet. Zo kan het op termijn bijvoorbeeld nuttig blijken de hele lijn uit te breiden met spraakherkenning. Een andere mogelijkheid is dat er enkel bepaalde softwareproducten worden uitgebreid, en dat deze producten dan naar voor worden gebracht als up-to-date producten. Zoals reeds gezegd moet dit alles bekeken worden binnen de bestaande lijn van producten, rekening houdend met het ‘imago’ dat deze productlijn en de onderneming hierdoor krijgt.

b)      Nieuwe opportuniteiten       
Spraakherkenning kan ook nieuwe opportuniteiten aan het licht brengen. Door een geslaagde initiële introductie van spraakherkenning in de producten van de software-ontwikkelaar, kunnen nieuwe interne toepassingen opduiken. Het is best mogelijk dat er na de ontwikkeling van een applicatie die gebruik maakt van spraakherkenning, bij de ontwikkelaars zulk een  groot enthousiasme ontstaat dat zij zelf ook de overstap naar deze nieuwe technologie willen maken. Algemener gesteld kan het ontwikkelen en het verkopen van spraakherkenning hier dus een aanleiding zijn om zelf spraakherkenning te gaan gebruiken.

 

1.2.2       Eindgebruiker

Als we de reclameboodschappen van de spraakherkenningspakketten moeten geloven, kan een spraakherkenner reeds na 10 minuten gelijk welke zin herkennen met een accuraatheid van ongeveer 98%. In praktijk draait het wel eens anders uit en zien we dat de kwaliteit van de herkenning vooral in het begin evenredig toeneemt met de trainingstijd die men er in steekt. Een verbetering van de herkenning met één percent kan op het eerste zicht wel weinig lijken, maar men moet hierbij vooral de uitgespaarde verbeteringstijd voor ogen houden. Het verschil tussen een spraakherkenner die 98 percent van de woorden herkent en één die 99 percent van de woorden herkent kan op het eerste zicht miniem ( slechts 1 percent) lijken. Bij nader inzicht blijkt deze verbetering namelijk een halvering van de verbeteringstijd in te houden, hetgeen zeker niet verwaarloosd dient te worden. Mijn persoonlijke ervaringen leren ook dat bij het gebruik van een spraakherkenner het meeste tijd in de verbetering van een dictaat kruipt, zeker als die verbetering ook door middel van spraakherkenning gebeurt. In deze paragraaf zullen dan ook enkele punten aangehaald worden die door de eindgebruiker in acht moeten genomen worden om de accuraatheid van spraakherkenning te verbeteren. Volgende 6 factoren dienen in acht genomen te worden om een goede spraakherkenning mogelijk te maken:

  • De kwaliteit van zowel de geluidskaart als van de microfoon die gebruikt worden.
  • De rekenkracht en het beschikbare geheugen van de computer
  • Een goede en consistente plaatsing van de microfoon.
  • Het volledig doorlopen van trainingssessies.
  • Het uitbreiden van de woordenschat met persoonlijk veel gebruikte woorden.
  • Hoe meer training, hoe beter.

 

1.2.2.1       De kwaliteit van de geluidskaart en de microfoon

Dit is een van de belangrijkste zaken waarop gelet moet worden, nog voor de spraakherkenningssoftware wordt aangekocht. Een slechte geluidskwaliteit ten gevolge van een kwalitatief lagere geluidskaart maakt een spraakherkenner volledig nutteloos. De herkenning is dan zo slecht dat er nauwelijks tijd gewonnen wordt. Bij het gebruik van een laptop-computer is de geluidskaart meestal niet kwalitatief genoeg voor spraakherkenning. Een mogelijke oplossing is hier het gebruik van een USB[4]-microfoon, waar de A/D-conversie (zie paragraaf 1.2.1) in de microfoon zelf gebeurt en dus geen storingen ondergaat ten gevolge van magnetische stralingen die in de computer aanwezig zijn.

 

Uit vele praktijktesten is ook gebleken dat de microfoons die standaard met een spraakherkenner worden meegeleverd verre van optimaal zijn. Voor een optimaal gebruik van spraakherkenning kan het dan ook nuttig zijn gebruik te maken van een professionele studiomicrofoon. De microfoon die meegeleverd werd met de spraakherkenner kan dan als reservemicrofoon dienen.

 

1.2.2.2       Computerspecificaties

Algemeen kan men stellen dat de systeemvereisten die door de ontwikkelaars van een spraakherkenningspakket worden aanbevolen nogal laag uitvallen. Om echt goed aan spraakherkenning te doen, is er momenteel een processor van minstens 350 MHz en een intern geheugen van 128 MB RAM nodig. Deze specificaties kunnen wel wat variëren van product tot product. Uiteraard dienen deze vereisten nog te worden verhoogd als er naast het spraakherkennen nog andere taken lopen die veel processorkracht of werkgeheugen vereisen.

 

1.2.2.3       Een goede en consistente plaatsing van de microfoon.

Met een goede plaatsing van de microfoon wordt de relatieve plaatsing van de microfoon ten opzichte van de mond bedoeld . De microfoon moet steeds op ongeveer 2 centimeter van de mondhoek verwijderd zijn en mag niet recht voor de mond gehouden worden om het geluid van de ademhaling te vermijden.

 

Om een consistente plaatsing van de microfoon te garanderen dient de microfoon steeds op dezelfde plaats en afstand gehouden te worden. Vooral tussen verschillende sessies kan dat van belang zijn. Zo is er bijvoorbeeld veel verschil tussen het geluid dat rechts van de mond wordt waargenomen en het geluid aan de linkerkant van de mond. Vooral bij het initiëel gebruik en bij de training van de spraakherkenner heeft de consistente plaatsing van de microfoon veel belang omdat de eerste trainingen het zwaarst doorwegen. (zie paragraaf  1.2.3.5). Eventueel kan er in het begin gebruik gemaakt worden van een spiegel om de juiste plaatsing van de microfoon te bepalen.

 

1.2.2.4       Het volledig doorlopen van trainingssessies

Het doorlopen van de hele trainingssessie klinkt vrij logisch, maar wordt door vele gebruikers achterwege gelaten. Om een redelijke herkenning te garanderen is er minimaal een training van 30 minuten nodig. Het is ook noodzakelijk dat alle getrainde zinnen correct herkend werden. Vele spraakherkenners bieden de mogelijkheid om ondanks een foute herkenning toch door te gaan met de volgende zin. Dit moet zo veel mogelijk vermeden worden.

 

Verder moet de eindgebruiker er ook op letten dat er tijdens de training niet overdreven wordt bij de articulatie. Omdat het model steunt op de uitspraak zoals die tijdens de training gebeurt, is het dus belangrijk om tijdens de training zo normaal mogelijk te articuleren en te spreken. Vele gebruikers menen ten onrechte, dat een spraakherkenner  na een training waarin overdreven gearticuleerd wordt, zeker een normaal uitgesproken zin zal kunnen herkennen. Dit neemt niet weg dat een duidelijke articulatie tijdens het gebruik een goede herkenning teweeg brengt.

 

1.2.2.5       Het uitbreiden van de woordenschat

Voor het uitbreiden van de woordenschat kunnen enkele documenten gebruikt worden die een woordgebruik vertonen dat typisch is voor het herkenningsgebruik Het is uiteraard efficiënter zoveel mogelijk woorden op voorhand in het lexicon op te nemen dan ze later, tijdens de herkenning, woord voor woord te moeten verbeteren. Bovendien is het waarschijnlijk dat de eindgebruiker tijdens het concrete gebruik minder tijd zal kunnen vrijmaken om de spraakherkenner op de nieuw aangeleerde woorden te trainen.

 

1.2.2.6         Hoe meer training, hoe beter

Het goed in acht nemen van de vorige 5 punten zou reeds een accuraatheid van om en bij de 95 percent herkende woorden tot gevolg moeten hebben. De enige manier om daarna het herkenningspercentage nog op te voeren, bestaat erin eigenhandig de fout herkende woorden  te verbeteren en deze verbeteringen in te voeren in het systeem. Dit hele proces kan tot twee weken duren. Deze periode zou ook moeten volstaan om de gebruiker bekend te maken met de typische gebruiksfuncties. Het is tevens aan te raden om tijdens deze twee weken, aantekeningen te maken van wat er moet gedicteerd worden, alvorens daadwerkelijk te dicteren. Een goed dictaat vergt oefening en enkele aantekeningen kunnen daarbij zeker van pas komen.

1.2.3       Documentatie

Het belang van goede documentatie voor zowel de software-ontwikkelaar als voor de eindgebruiker kan hier niet genoeg benadrukt worden. Voor elk project is in elke fase een uitgebreide documentatie vereist om de kansen op slagen van een project te verhogen. Een gebrek aan documentatie leidt in vele gevallen tot een onderschatten van de functionaliteit van verschillende softwarepakketten. Op die manier gaan vaak vele efficiënties en synergieën verloren.

 

Voor de eindgebruiker zal deze documentatie voornamelijk bestaan uit een duidelijke uiteenzetting van de gebruiksmodaliteiten, zodat de kans op een efficiënte benutting van de mogelijkheden van het systeem zo groot mogelijk wordt. Voor de software-ontwikkelaar daarentegen zal de documentatie, naast de technische en organisatorische factoren die reeds werden behandeld, zeker ook een analyse van de marktsituatie inhouden. De huidige marktsituatie wordt dan ook in de volgende paragraaf behandeld.

 

1.3        Succes en haalbaarheid van spraakherkenning in de praktijk: marktvoorspelling.

Na deze theoretische analyse zal onderzocht worden in welke mate spraakherkenningssystemen effectief in de markt geïntegreerd geraken. Het uiteindelijke doel van de Kritieke Succes Facoren is tenslotte het beslissen of een product al dan niet gelanceerd zal worden. Daarom is het in deze context belangrijk om ook de huidige situatie en de verwachte tendenzen te evalueren. Het belang van deze evaluatie wordt duidelijk aangetoond door volgend voorbeeld van Noll A. M. (1992):

 

The development of picturephone service is estimated to have cost AT&T $500 million. Its market failure in the early 1970’s was a complete surprise to AT&T...If the true reasons for picturephone’s failure in the 1970’s involved a lack of needs and even a basic dislike by most consumers and potential users for face-to-face visual telecommunaction, than any reintroduction of picturephone service would be doomed to repeat the market failure of the past.

 

Noll suggereert hier dat het falen van beeldtelefonie in de jaren 70 mogelijks te wijten was aan een gebrek aan marktpotentiëel voor deze nieuwe technologie. Uit Vanhaverbeke (1990) leren we dat het bepalen van het marktpotentiëel gebeurt aan de hand van marktvoorspellingen. Het feit echter dat producten of markten voor zowel de producent als de consument nieuw zijn en een gebrek aan enige historische gegevens maken deze voorspellingen zeer moeilijk.

 

Voor spraaktechnologie merken we dat er de laatste jaren er zowel in de media als in de financiële wereld veel interesse is voor de nieuwe technologie, ook al gaat het hier voornamelijk over de toekomstige waarde van de betrokken bedrijven. We denken hier bijvoorbeeld aan de faam die Lernout&Hauspie verworven heeft, onder andere door de participatie die Microsoft op 11 september 1997 in dit Vlaamse bedrijf nam. Hieruit blijkt toch wel dat het fenomeen spraakherkenning ingeburgerd geraakt, maar of dit impliceert dat er een concrete marktvraag naar spraakherkenningsproducten is, blijft vooralsnog onzeker. Men moet namelijk goed in acht nemen dat ook de beurs de toekomstige waarde van een nieuwe technologie kan overschatten.

 

Een tweede aandachtspunt dat men bij marktintroductie van een nieuw high tech product niet uit het oog verloren mag verliezen, is het verschil tussen succesvolle experimenten met nieuwe producten en werkelijke efficiëntie voor de eindgebruiker. In een artikel van Jane Webster (1998) lezen we:

 

Although it would have been preferable to study a client site, the developer site was chosen because it is the only known large scale implementation of desktop videoconferencing in the world.

 

Uit dit citaat blijkt het belangrijke verschil tussen experimenteerfase en het eindgebruik van high tech producten. Daarom zijn wij van mening dat het ook bij spraakherkenning aangewezen is om de verwachtingen ten aanzien van spraakherkenning enigszins te temperen. Volgende figuur (Figuur 1) uit 1997 illustreert dit voor de medische sector. In 1997 stond de technologie voor spraakherkenning in de medische sector al op punt. Pas drie jaar later ziet men in sommige ziekenhuizen de eerste implementaties met een daadwerkelijke efficiëntieverbetering opduiken. Een reden voor deze lange periode tussen het op de markt brengen en de concrete toepassingen kan gezocht worden in het reeds vermelde verschil tussen het gebruik van een spraakherkenner en het halen van resultaten ermee (zie paragraaf 1.1.2).


 

 

 

 

 

 

 

 

 

 


Figuur 1 Voorspelling van het gebruik van spraaktechnologie door de 1000 belangrijkste bedrijven in de U.S.A.
(Comerford, Makhoul & Schwartz)

 

1.4        Synthese

Een KSF-analyse laat ons toe na te gaan of – los van de strikt-financiële kosten-batenanalyse – de introductie van een nieuwe technologie succesvol kan zijn. Vanuit de verschillende invalshoeken blijkt dat de combinatie van spraaktechnologie en medische administratie, mits voldaan wordt aan een aantal voorwaarden, zeker een toekomst voor zich kan hebben.

 

Het loont dus alleszins de moeite in het perspectief van deze combinatie de technische evoluties inzake spraaktechnologie verder te analyseren.


Hoofdstuk 2      Algemene principes van spraakherkenning

 

Spraakherkenning is een eenvoudig concept: men spreekt iets in, en de computer interpreteert het. Hij voert het bevel uit of hij schrijft de ingesproken tekst uit. De technologie die er achter zit, is echter veel ingewikkelder en voor velen is spraaktechnologie dan ook een onbekend domein. Daarom zal er in dit hoofdstuk een uiteenzetting gegeven worden omtrent het vakgebied van de automatische spraakherkenning. Alvorens op de details in te gaan wordt eerst de globale taak van een spraakherkenner aangegeven. Vervolgens wordt er dieper ingegaan op de technische aspecten van spraakherkenning. Omwille van het zeer brede domein dat spraakherkenning bestrijkt, worden hier enkel de belangrijkste en de meest gebruikte werkwijzen dieper bestudeerd.

 

2.1        Taak van een spraakherkenner

Ron Cole (1996)[5] beschrijft spraakherkenning als het proces dat een akoestisch signaal, dat opgenomen werd door een microfoon of een telefoon, omzet in een orthografische sequentie van woorden die deze geluidssignalen voorstellen. Deze sequentie van  woorden kan het eindresultaat vormen, of kan dienen voor andere toepassingen zoals command & control. Wiskundig bekeken bestaat de taak van een spraakherkenner dus uit het afbeelden van een spraaksignaal op een rij symbolen of woorden. Om deze taak te vervullen, berekent de computer de kans op een klasse (woord of zin) w, gegeven de uiting y van deze woorden. Deze kans wordt voorgesteld door P(w|y). Aangezien enkel de kans van voorkomen van een woord P(w) en de kans van voorkomen  van een akoestisch signaal op voorhand bekend zijn, dient de stelling van Bayes gebruikt te worden. Deze wordt gegeven door:

 

P(w|y) = P(y|w) * P(w) / P(y)


De enige onbekende in deze formule is P(y|w), de kans op uiting y gegeven sequentie van woorden w en deze waarde moet dus gezocht worden. Later zal blijken dat er nog andere manieren zijn om P(w|y) te berekenen. Maar voordat het zover is moet er nog een en ander gebeuren.

 

Ten eerste moet de spraak geparametriseerd worden. De spraakherkenner heeft namelijk een symbolische representatie van de spraakdata nodig om bovenstaande kansen te kunnen berekenen. Dit parametriseren van spraak gebeurt met technieken uit de signaalanalyse. De volgende paragraaf behandelt dan ook enkele basale technieken en ideeën uit de signaalanalyse.

 

Een tweede taak van een spraakherkenner is het creëren van een omgeving waarbinnen de feitelijke spraakherkenning plaatsvindt. De standaard hiervoor is het gebruik van Hidden Markov Modellen (HMM's). Deze modellen kunnen eerst automatisch getraind worden en daarna zijn ze klaar voor gebruik. In de laatste paragraaf van dit hoofdstuk zal hier op ingegaan worden. Eerst zullen Hidden Markov Models in het algemeen behandeld worden, vervolgens zullen we het hebben over een aantal keuzes die gemaakt dienen te worden en daarna zal het trainen van en het herkennen met HMM’s beschreven worden.

 

2.2        Hoe werkt spraakherkenning?

Zoals vermeld in de vorige paragraaf, is de eerste fase van de spraakherkenning het parametriseren van het spraaksignaal. Een spraaksignaal is namelijk een fysische golfvorm die door een computer, die binair rekent, niet rechtstreeks gebruikt kan worden. Eerst zullen wat algemene technieken uit de signaalanalyse behandeld worden en vervolgens wordt er doorgegaan naar de signaalanalyse die belangrijk is voor spraakherkenning. In een volgende paragraaf komen de transformaties die op het gedigitaliseerde signaal worden uitgevoerd aan bod. Het laatste en belangrijkste deel behandelt het zoekproces naar een orthografische sequentie van woorden door de waarschijnlijkheden van voorkomen van deze woorden te bepalen. Figuur 2 geeft een overzicht van de verschillende componenten van een spraakherkenningssysteem.


 

 

 

 

 

 

 

 

Figuur 2 De componenten van een spraakherkenningssysteem. (Zue & Cole)

 

2.2.1       Codering door een analoog-digitaalconversie

Om een gesproken signaal te converteren naar een voor een computer verstaanbaar formaat, is er een analoog-digitaalconversie (A/D conversie) van het ingesproken signaal nodig. Dit gebeurt tegenwoordig in elke PC dankzij de geluidskaart. Deze conversie bestaat uit het op regelmatige tijdstippen meten van de sterkte van het inkomend signaal en deze metingen dan binair voor te stellen zodat ze door de computer gebruikt kunnen worden. De tijd tussen de verschillende metingen bepaalt de zogenaamde samplingfrequentie. De kwaliteit van de metingen wordt bepaald door de bitresolutie.

 

Nemen we als voorbeeld een inkomend sinussignaal van 1 KHz, dan kunnen we bijvoorbeeld om de 0.125 milliseconden een meting doen. Als we een bitresolutie nemen van 8 bits, dan hebben we 2^8 (256) mogelijke waarden per meting. De computer moet dan 8000 keer per seconde 1 byte (8 bits) opslaan. Dit wordt weergegeven in Figuur 3 voor de eerste twee metingen. De sampling frequentie is in dit geval 8000 Hz en de bitrate is 8 bits. Aangezien het menselijk oor tonen tot 20 kHz kan waarnemen, volgt volgens de stelling van Nyquist[6] dat een samplingfrequentie van 40 kHz zou gebruikt moeten worden. In de praktijk wordt er voor CD’s, geluidskaarten, samplers, …een samplingfrequentie van 44,1 kHz gebruikt. Een bitresolutie van 16 bit is momenteel de standaard en komt overeen met een theoretische dynamiek van 96 dB[7], hetgeen meer dan voldoende is.

Figuur 3 Eerste 2 metingen aan 8KHz in 8bit

 

Omdat de menselijke stem kan maar tonen tot ongeveer 8 Khz kan voortbrengen, is voor het verstaan en het bewerken van een ingesproken opname een samplingfrequentie van 16kHz tot 20 kHz genoeg. Voor de bitresolutie volstaan waarden tussen 12 of 16 bits. Voor spraakherkenning moet er voor ogen gehouden worden dat het menselijk oor steeds beter blijft dan het computeroor en dat computers het dus moeilijk zullen hebben met geluid van lage kwaliteit. De keuze van de samplingfrequentie en van de bitresolutie hangt dus in hoge mate af van specifiek uit te voeren spraakherkenningstaak en van de beschikbare computerkracht.

 

In een volgende stap moet het begin en het einde van een gesproken signaal achterhaald worden. Als we een redelijke stille achtergrond gebruiken kan dit gemakkelijk gebeuren door de energie of de amplitude van het signaal te bekijken. De DC-offset is een DC-signaal ten gevolge van magnetische velden in de buurt van de AD-convertor. Dit DC-offset-niveau wordt gebruikt om de zero-crossing te bepalen. De zero-crossing is de plaats waar het signaal de DC-offset snijdt, of dus van positief naar negatief gaat. Daarom wordt er bij spraakherkenning meestal een meting van de stilte genomen om zo de DC-offset en energie van de continue ruis te achterhalen. Aan de hand van de frequentie van de zero-crossing en de amplitudes kunnen we dan de energie van het signaal bepalen. Als de energie dan de ruisenergie met een bepaalde waarde overschrijdt, kunnen we een ingesproken signaal veronderstellen.

 

2.2.2       Transformaties

Met een gedigitaliseerd signaal alleen hebben we onvoldoende informatie om spraak te herkennen. Om gesproken klanken te identificeren worden verschillende transformaties uitgevoerd op het digitale signaal. De drie belangrijkste zijn de windowing-transformatie, het opstellen van het vermogensspectrum  en de Fourieranalyses.

 

2.2.2.1       Windowing

De samplewaarden zoals die in de vorige paragraaf bekomen werden, gaan vervolgens door een bewerking (de representatie) voorgesteld worden als een opeenvolging van vectoren met hun zogenaamde parameters. Deze representatie bestaat eruit om op bepaalde tijdstippen (10 a 30 milleseconden) een nieuwe vector te genereren met een twintigtal parameters. Om deze tijdstippen te bepalen kapt men het signaal op twee plaatsen af en kan het tussengelegen stuk signaal gebruikt worden voor latere transformatie. Aangezien de zero-crossing gebruikt wordt om de frequentie te bepalen is het belangrijk dat het afkappen op de juiste plaats gebeurt. Het is bijvoorbeeld mogelijk dat er juist voor en juist na een zero-crossing afgekapt wordt waardoor er een soort dubbeltelling onstaat van het aantal zero-crossings, hetgeen dan weer een foute frequentieweergave tot gevolg heeft. Als de tijdsduur van een afgekapt signaal dus niet een geheel aantal keer de verschillende trillingstijden die in het signaal aanwezig zijn omvat, dan treden er onregelmatigeheden op in het spectrum..Zeker als het spectrum op een logaritmische as afgebeeld wordt zijn de problemen met het rigoureus afkappen van het signaal duidelijk zichtbaar, zoals men kan zien in Figuur 4. Dit fenomeen wordt windowing genoemd.

 

Figuur 4 Windowing (Werkstuk Spraakherkenning, Rens Kortmann, 1996[8])

 

In spraak zijn zoveel verschillende trillingstijden bevat dat nooit aan de voorwaarde van de trillingstijden kan worden voldaan. De enige mogelijkheid is dan het signaal aan de randen langzaam naar nul te laten gaan. Hiervoor kan een zogenaamd 'tapered window' gebruikt worden. Het tijdssignaal wordt met dit window vermenigvuldigd en het resultaat is een geleidelijk naar nul lopende figuur waar van het spectrum berekend kan worden. Het meest gebruikte window is een zogenaamd Hamming window.

 

Om de zo bekomen opeenvolging van vectoren met elk hun parameterwaarden verder te analyseren wordt er gebruik gemaakt van fonemen. Fonemen zijn de kleinste klankeenheden met een betekenisonderscheidende functie.[9] Zo telt het Nederlands 45 verschillende fonemen.[10] De opeenvolging van vectoren met elk hun parameterwaarden zoals die in de vorige paragraaf beschreven werd, wordt dan gebruikt om de waarschijnlijkheid te bepalen dat het inkomende signaal overeenstemt met de gehypotheseerde fonemen. Concreet interageert de bewerking van het inkomend signaal naar een geparametriseerde vector vaak met het bepalen van de waarschijnlijkheden dat een bepaald signaal overeenstemt met een bepaalde foneem, en is het onderscheid tussen beide processen niet echt duidelijk.

 

2.2.2.2       Opstellen van het vermogensspectrum

De bedoeling van dit proces is om zo veel mogelijk informatie uit het inkomend signaal te halen om de fonetische identiteit van een stukje gesproken tekst te achterhalen. Het gaat er hier hoofdzakelijk om factoren als sprekersidentiteit, akoestische effecten zoals achtergrondgeluiden en paralinguïstische factoren zoals emoties in de stem te elimineren. Het resultaat is dan een zo compact mogelijke voorstelling van het signaal.

 

Om dit te bekomen moeten de eigenschappen van het signaal die te wijten zijn aan vocale factoren onderscheiden worden van de eigenschappen ten gevolge van excitatie in het signaal. Daarom moet er vooral gekeken worden of er vibratie in het signaal zit of niet (stem of geen stem) en moet de eigenlijke frequentie van het signaal geëlimineerd worden (excitatie). Dit kan men bekomen door een vermogensspectrum van het signaal op te stellen. Het vermogensspectrum kan bekomen worden door de energieniveau’s van de verschillende frequenties te berekenen.[11] Het meest gebruikte algoritme om vermogensspectra te berekenen is de Welch's Averaged Periodogram Method.[12] Het voordeel van een vermogensspectrum is dat de fase (en dus ook de frequentie) van het signaal geen invloed meer heeft op de voorstelling van het signaal. Dit kan geen kwaad aangezien de fase van een signaal door mensen ook niet kan waargenomen worden en dus niet bijdraagt tot het “verstaan” van een signaal. Faseringen treden immers meestal op ten gevolge van kamereffecten en deze moeten toch geëlimineerd worden.

 

Het vermogensspectrum wordt in een laatste fase dan op logaritmische schaal voorgesteld. Dit biedt vele voordelen om ruis en veranderingen in het volume van het signaal weg te werken.[13] Aangezien de log van nul oneindig is, kan men heel lage energieniveaus niet voorstellen. Daarom wordt er een minimum op de waarde van het vermogen gezet en is tegelijkertijd de gevoeligheid voor zwakke ruissignalen weggewerkt. Om het gemiddelde van het spectrum af te vlakken wordt het inkomend signaal teznslotte met 6dB verhoogt door middel van een filter die op de relevante frequenties van het inkomend signaal werkt.

 

2.2.2.3       Fourieranalyse

De Fourieranalyse is de belangrijkste stap uit de signaalverwerking voor automatische spraakverwerking. Om de korte vermogensspectra te berekenen bekijkt men overlappende stukjes (frames) van het signaal. Meestal wordt per tijdsframe van typisch 10 milliseconden een vector van parameters berekend, omdat in die tijdsduur spraak ongeveer stationair kan worden geacht. Uit 10 milliseconden valt echter niet genoeg informatie te halen, zodat om de 10 milliseconden een tijdsframe van 25 milliseconden wordt geanalyseerd. Het begin en het einde van elk frame wordt dan afgevlakt door middel van het reeds besproken tapered window, en vervolgens voert men een Fourieranalyse uit op het stukje signaal.

 

Bij een Fouriertransformatie ondergaat het signaal een tweede meting die de wiskundige beschrijving van het signaal vanuit het tijdsdomein naar het frequentiedomein transformeert. Dat wil zeggen: een functie van de tijd wordt omgezet in een functie van de diverse frequenties die in het signaal verborgen zitten. De Fourier getransformeerde van een functie is namelijk volledig gelijkwaardig aan die functie: het is enkel een andere manier om de functie weer te geven of te beschrijven.[14] Voor spraakherkenning is het vaak veel praktischer te werken met de Fouriergetransformeerde van een functie dan met de oorspronkelijke functie.

 

Het door de Fouriertransformatie bekomen spectrum bevat nog veel redundante informatie omwille van de harmonische boventonen. Deze boventonen worden weggewerkt met een onderdoorlaatfilter en vervolgens voert men een omzetting van de frequentiebanden naar logaritmische schaal door. Aangezien het ingesproken signaal (de menselijke stem) vrij gelijkmatig verloopt, zijn de energieniveaus in de opeenvolgende frequentiebanden sterk gecorreleerd. Deze correlatie is redundant en kan weggewerkt worden door gebruik te maken van een cosinustransformatie (een soort Fouriertransformatie waarbij men enkel cosinussen als basisfunctie gebruikt) in plaats van een  gewone Fouriertransformatie. Het resultaat van deze cosinustransformatie op de log energieniveaus zijn de zogenaaamde spectraalcoëfficiënten. Deze spectraalcoëfficiënten zijn vrij ongecorreleerd en zorgen dus nog voor een verdere reductie in het aantal parameters. De eerste spectraalcoëfficiënt (C0) geeft de vorm van het cos-spectrum aan, onafhankelijk van het niveau. C1 geeft dan de verhouding tussen het bovenste en het onderste gedeelte van het spectrum aan. De hogere coëfficiënten geven steeds gedetailleerdere informatie over het spectrum.

 

Figuur 5 geeft de fouriergetransformeerde en het oorspronkelijke signaal weer van het Finse woord ‘kaksi’, dat ‘twee’ betekent. In de fouriertransformatie kunnen we duidelijk zien dat het woord begint met overwegend signalen rond 1 Khz (a-klank), vervolgens komen er hoge tonen rond de 4.5 Khz voor (s-klank) en tenslotte terug enkele lagere tonen  rond de 2 Khz (i-klank). Bij het eerste signaal rond 1 Khz is aan de donkere plekken rond 2 en 3 Khz te zien dat de harmonische boventonen niet volledig weggefilterd zijn.

 

 

Tijd

 

Fre-

Quen-tie

 

Ampli- tude

 

Figuur 5 Fouriergetransformeerde en oorspronkelijke signaal van het Finse woord ‘kaksi’ (Phonetics and Theory of Speech Production[15])

 

Alternatieven om de spectraalcoëfficiënten te berekenen zijn Linear Predictive Coding (LPC), Perceptual Linear Prediction (PLP) en z-transformatie. LPC geeft de effecten van een all-pole filter weer op het ingangssignaal om de parameters te berekenen. Op die manier wordt het signaal samengevat in een aantal coëfficiënten en geeft een hoge datareductie met een klein verlies aan informatie. Het grote voordeel bij LPC is dat het spectrum zelf nooit berekend moet worden. PLP voert ook een all-pole filtering uit op de energieniveaus, nadat deze door een filterbank werden gehaald. Met de zo bekomen parameters berekent men dan de spectraalcoëfficiënten. De z-transformatie wordt voornamelijk gebruikt in de meet- en regeltechniek. De getransformeerde functie in het z domein is nu een lineaire combinatie van verschillende machten van z geworden.

Vele systemen voegen aan het vermogensspectrum nog informatie over de verandering in het vermogen toe. Dit doet men door over vijf tot zeven frames een lineaire trend te voorspellen. Om informatie over de tweede orde afgeleide van het vermogen weer te geven, wordt er ook lineair geschat, maar dan over 15 tot 20 frames.
Zoals reeds vermeld kunnen ruisfactoren en DC-offset gemakkelijk weggewerkt worden in het spectrum. Dit doet men ook frame per frame.

 

2.2.3       Bepalen van de waarschijnlijkheden

In deze fase moeten de bekomen spectraalcoëfficiënten vergeleken worden met een referentiemodel dat de verschillende fonemen voorstelt. Aangezien de spectraalcoëfficiënten ongecorreleerd zijn kan men hiervoor gebruik maken van de Euclidische afstand tussen het vooropgestelde en het bekomen model. Hierbij geeft men aan elke coëfficiënt een wegingsfactor mee. Voor het bepalen van de wegingsfactoren kan men gebruik maken van statistische methodes. Men kan een coëfficiënt bijvoorbeeld omgekeerd evenredig laten doorwegen met zijn standaardafwijking. De meest gebruikte methode is echter het Hidden Markov Model (HMM). Eerst zal kort aangehaald worden wat Hidden Markov Modellen zijn, dan volgt een beschrijving van wat Akoestische en Language Modellen zijn, en tenslotte wordt het gebruik van Hidden Markov Modellen voor de training van spraakherkenning en voor spraakherkenning uitgelegd.

 

2.2.3.1       Hidden Markov Model

Het belangrijkste foneemgebaseerde akoestisch kerkenningsparadigma van de laatste 10 jaar is het Hidden Markov Model (HMM). Gewone Markov Modellen bestaan uit een aantal toestanden, waarin een waarneming gedaan wordt. Deze waarneming is in het geval van spraakherkenning bijvoorbeeld een letter. Tussen de verschillende toestanden zijn paden aangebracht, zodat het mogelijk is om van de ene toestand in de andere toestand te geraken. Of deze overgang van toestanden werkelijk plaatsvindt wordt bepaald door de overgangstoestanden. In Hidden Markov Modellen (HMM) is de waarneming die in de verschillende toestanden wordt gedaan verborgen. Deze wordt namelijk aangegeven door een serie waarnemingswaarschijnlijkheden. Alle waarnemingen die kunnen worden gedaan krijgen een bepaalde kans om waargenomen te worden.

 

In spraakherkenning worden meestal per model drie toestanden gebruikt, die van links naar rechts doorlopen kunnen worden. Hierbij is het wel mogelijk om vanuit een toestand weer in dezelfde toestand terecht te komen en soms ook om juist een toestand over te slaan (zogenaamd skip transitions). Deze modellen worden ook wel 'left-to-right models' genoemd, dit in tegenstelling tot de zogenaamd ergodische modellen, waarin vanuit een toestand ook 'achteruit in de tijd' verplaatst kan worden. Verder is het vermeldenswaardig dat HMM's in spraakherkenning twee 'non-emitting' toestanden heeft, dat wil zeggen toestanden waarin geen waarnemingen worden gedaan. Dit zijn in praktijk de eerste en de laatste toestand van een model. Zij zijn toegevoegd vanwege de voordelen die ze leveren als later in het bouwproces de HMM's gekoppeld worden in een netwerk.

 

De opeenvolging van de verschillende frames, zoals die uit het geluidssignaal wordt afgeleid, wordt gezien als een realisatie van een reeks elementaire processen zoals beschreven door een Hidden Markov Model. Het HMM bestaat dan uit de volgende twee stochastische processen: een Hidden (onderliggende) Markov reeks die tijdelijk kan veranderen, en een observeerbare reeks die kan afgeleid worden uit de spectraalcoëfficiënten. Deze methode blijkt flexibel en goed genoeg te zijn om spraak te herkennen met een vocabularium van duizenden woorden.

 

Het HMM laat dus toe de kans te bereken dat een bepaalde reeks spectraalcoëfficiënten Yti, die uit de Fouriertransformatie zijn afgeleid, wordt waargenomen als de uitgesproken woorden X zijn. Gegeven de observeerbare reeks Yti wordt een schatting van W gemaakt aan de hand van volgende formule:


Ŵ = max{x} ( P( Yti | X) * P( X ) )


Ŵ is dan het meeste waarschijnlijke a-posteriori onderliggende woord. Men kan
 P (Y
ti | X) berekenen aan de hand van een Akoestisch Model (AM). P (X) kan berekend worden met een Language Model (LM).

 

2.2.3.2       Akoestisch Model

Een Hidden Markov Model is niets meer dan een paar stochastische variabelen (X,Y). Hierin stelt X de eerste orde Markov reeks voor, en is dus niet rechtstreeks observeerbaar. Y is een variabele om de reeks spectraalcoëfficiënten voor te stellen, of algemener gesteld zijn dit de observaties.

Bij het gebruiken van HMM’s voor spraakherkenning zijn er drie algoritmes nodig. Ze zijn ontwikkeld om drie belangrijke gegevens uit een HMM te halen, zodanig dat  spraakherkenning toegepast kan worden. De eerste twee hebben te maken met het herkennen van een serie observaties en het derde met het trainen van het model. De gegevens zijn:


1. De Evaluatie: Wat is, gegeven een model X en een serie waarnemingen Y, de kans dat het model deze serie waarnemingen heeft gegenereerd?

2. Het Padvinden: Wat is, gegeven een model X en een serie waarnemingen Y, het meest waarschijnlijke pad door het model dat deze serie waarnemingen oplevert?

3. Het Trainen: Hoe moeten, gegeven een model en een aantal waarnemingen Y, de parameters van een model ingesteld worden, zodat het model een hoge waarschijnlijkheid heeft om de observaties te produceren?


In 1 moet een kans berekend worden. In 2 moet een pad met de hoogste kans bijgehouden worden. En in 3 moeten per trainingssessie de parameters van het model bijgesteld worden.

 

Deze kansen bepalen de kansverdelingen van de overgangen tussen de verschillende toestanden. Als men de waarden voor de verschillende dimensies van de geparametriseerde vectoren discreet houdt, heeft men een zogenaamd Discreet HMM. Elk van de Q dimensies van elke geparamitriseerde vector kan dan maar N verschillende waarden aannemen zoals te zien is in Figuur 5.

0,4

 

Source 1

 
 


Figuur 6 Discreet HMM (HMM Methods in Speech Recognition[16])

 

Anderzijds kan men de continue ruimtes gebruiken voor de observaties, en heeft men dus continue verdelingen in het HMM. In het continue geval moeten er wel sterke beperkingen opgelegd worden aan de verdelingsfuncties om het aantal te schatten parameters beheersbaar te houden. Meestal gebruikt men n-dimensionale Gauss- of Laplaceverdelingen en laat men enkel de parameters van deze verdelingen variëren. De berekeningen voor het discrete model zijn uiteraard eenvoudiger dan die voor het continue model, maar gaan echter ten koste van de accuraatheid.

 

Door onafhankelijkheid te onderstellen tussen de verschillende dimensies, kan men de kansen van de verschillende overgangen simpelweg berekenen door het product te nemen van de kansen van de overgangen van iedere dimensie apart. De resultaten van deze vermenigvuldigingen vormen samen met de trainingsgegevens (zie
paragraaf  2.2.3.5) het Akoestisch Model.

 

2.2.3.3       Language Model

Het Language Model berekent de waarschijnlijkheid dat een zekere sequentie van woorden uitgesproken wordt. Dit kan zeer algemeen uitgedrukt worden:


P ( W ) = p (w1,w2,w3,...wn) =
Π {i=1..n} p ( wi | w0,..,w(i-1) )


Deze kansen kunnen op voorhand bepaald worden en zijn onafhankelijk van de spreker. Ze worden voorgesteld in een N-gram. Een N-gram is een statistisch model dat de kans op een woord geeft naar aanleiding van een aantal voorgaande woorden. Het meest succesvolle N-gram model van de laatste 2 decennia is het trigrammodel. Bij dit model worden de laatste 2 herkende woorden gebruikt om de waarschijnlijkheid van voorkomen van het nieuwe woord te bepalen.[17]

 

2.2.3.4       HMM Algoritmes

Aan de evaluatie van een inkomend signaal is het Forward algoritme verbonden. Het Forward algoritme berekent de kans om op tijdstip t in toestand j te zitten en waarnemingen y(1) t/m y(t) al gedaan te hebben. Het algoritme werkt recursief, waarbij op elk tijdstip de som genomen wordt van de kansen in de voorgaande toestanden, vermenigvuldigd met de overgangswaarschijnlijkheden naar de huidige toestand. Dit wordt dan weer vermenigvuldigd met de waarnemingswaarschijnlijkheid in de huidige toestand. Zo kan recursief toegewerkt worden naar het laatste tijdstip. De toestand waarbij de kans het grootst is, is dan de eindtoestand. Dit algoritme wordt ook vaak logaritmisch uitgevoerd, omdat er nogal veel vermenigvuldigingen in voorkomen. Logaritmisch mag je deze vermenigvuldigingen vervangen door optellingen, wat veel minder rekentijd kost.


Bij het Padvinden (paragraaf 2.2.3.2) wordt veel gebruik gemaakt van het Viterbi algoritme. Het Viterbi algoritme is een aanpassing van het Forward algoritme. Waar in het Forward algoritme een sommatie plaats vindt over de kansen die bij elkaar kwamen, daar vindt in het Viterbi algoritme een selectie plaats. De selectie is gebaseerd op het hoogste product van kans in een vorige toestand en de overgangswaarschijnlijkheid naar de huidige toestand. Deze meest waarschijnlijke voorganger wordt dan ook onthouden en zo wordt het meest waarschijnlijke pad bijgehouden. Ook hier wordt vaak de logaritmische variant toegepast.

 

Het Forward-Backward algoritme, ook wel het Baum-Welch algoritme genoemd, berekent de zogenaamde state occupation probability, die de kans weergeeft om op tijdstip t in toestand j te verkeren. Hierbij wordt gebruik gemaakt van de Forward probability, zoals hierboven beschreven, maar ook van de Backward probability. De Backward probability is analoog aan de Forward probability, maar de recursie begint nu aan het eind van de uiting, ten einde uit te komen op de kans om in tijdstip t in toestand j te verkeren, terwijl waarnemingen y(t+1) t/m y(T) nog gedaan moeten worden. Op grond van deze drie probabiliteiten worden de overgangs- en waarnemingswaarschijnlijkheden aangepast om het model te trainen volgens het Baum-Welsch algoritme.

 

2.2.3.5       Trainen van HMM’s

Bedoeling van een training is de fonemen van een spreker zo juist mogelijk te achterhalen. Zoals reeds vermeld in paragraaf 2.2.2.1 is een foneem de kleinste significante eenheid in een gesproken signaal. Als in het geparametriseerde spraaksignaal precies staat aangegeven welke vectoren bij welk foneem horen, dan kan per foneem een HMM worden gemaakt. Eerst wordt een initieel model gemaakt wat gebeurt door zogenaamde Viterbi training. Bij Viterbi training wordt de gemiddelde vector van de distributie van een bepaalde toestand eenvoudigweg berekend door het gemiddelde te nemen van de inputvectoren die bij die toestand horen. Bij geïsoleerde spraak wordt er door de spreker een korte pauze ingelast tussen elk woord. Er is dan bekend welke inputvectoren bij welke woord hoort aangezien de computer tijdens de training op voorhand weet welke woorden er worden uitgesproken. Daarna vindt eenvoudige Baum-Welch reestimation plaats, zoals hoger beschreven. Elke trainingssessie wordt de state occupation probability uitgerekend en op grond daarvan worden de overgangs- en waarnemingswaarschijnlijkheden aangepast. Dit gaat zo door totdat de waarschijnlijkheden niet meer veranderen. Dan is het model goed getraind.


Bij continue spraak kan Viterbitraining niet meer plaatsvinden, omdat de spraak immers niet meer gesegmenteerd is. Hier wordt begonnen met een zogenaamde Flat Start. Als initiële waardes van de HMM parameters worden de globale gemiddelden genomen van alle inputvectoren. Het Baum-Welch reestimation algoritme wordt aangepast tot embedded reestimation. Dit houdt in dat stukken spraak die langer zijn dan een foneem in hun geheel worden bekeken, samen met de transcriptie van dat stuk spraak. Dit heeft als voordeel dat geen labels tussen de verschillende woorden hoeven aangebracht te worden - dus minder onnauwkeurigheden daarin- en dat er rekening wordt gehouden met de uitspraak van een woord afhankelijk van de sequentie woorden waarin het woord voorkomt.

 

De hierboven beschreven methodes leveren basis HMM's, die verder verbeterd kunnen worden. Methodes hiervoor zijn bijvoorbeeld het contextafhankelijk maken van modellen, het introduceren van Gaussische mixen en het binden ervan. Hoe dit in zijn werk gaat zal hieronder beschreven worden.


Bij het contextafhankelijk maken van modellen worden modellen voor monofonen omgezet in modellen voor di- of trifonen. Zo kan bijvoorbeeld uit de monofone modellen van de letters E, U en R een difoon model gemaakt worden voor de E+U of een trifone model voor de E+U+R. Dit gebeurt door middel van het klonen van de modellen, dit wil zeggen dat de modellen van de afzonderlijke monofonen worden gekopiëerd en achter elkaar gezet worden. Dan vindt er weer training plaats om de nieuw gecreëerde trifone modellen nieuwe parameters te geven. Door het contextafhankelijk maken van de modellen, vindt er een aanmerkelijke verbetering bij de herkenning plaats, wat ook te begrijpen is, omdat een EU klank nu eenmaal heel anders klinkt dan een aparte E en U.

 

Een tweede manier om HMM's te verbeteren is het introduceren van Gaussische mixen. Hierbij wordt de waarnemingswaarschijnlijkheid niet bepaald door één Gaussische verdeling zoals in paragraaf 2.2.3.2 werd beschreven, maar door verschillende verdelngen met elk een eigen gemiddelde en standaarddeviatie. Tevens worden er gewichtswaardes aan de verschillende verdelingen toegekend die bepalen in hoeverre ze bepalend zijn in het berekenen van de waarnemingswaarschijnlijkheid. Deze gewichtswaardes moeten ook getraind worden met de hierboven genoemde Baum-Welch methode. Het mixen van Gaussische verdelingen leidt tot een verbetering van de herkenning, maar niet zo spectaculair als dat gebeurt bij het klonen van modellen.

 

Een derde methode om de HMM's te verbeteren is het zogenaamde parameter tying. Dit gebeurt vaak in combinatie met een van de hierboven beschreven technieken. Zo kunnen de diverse Gaussische mixen allemaal dezelfde matrix van standaard deviatie delen (tied mixtures). Of kunnen bi- en tri-fonen die erg op elkaar lijken gebruik maken van dezelfde Gaussische distributies (gegeneraliseerde bi- en tri- fonen). In elk van deze gevallen wordt een zogenaamd Gaussisch Codebook aangelegd waarnaar verwezen kan worden. Het voordeel van tying is verkorting van de rekentijd en het meer robuust maken van de HMM's. Een nadeel is de verminderde nauwkeurigheid.

 

2.2.3.6       Spraakherkenning met HMM

Geïsoleerde spraak is eenvoudig te herkennen, juist omdat de foneem- en woordgrenzen gegeven zijn. Het is dus zaak om per segment het model te vinden dat het beste past. Dit kan gemakkelijk gebeuren door toepassing van het Forward algoritme. Het model met de hoogste kans stelt dan het herkende symbool of woord voor. Verder is een Language Model aanwezig dat van de herkende symbolen, meestal fonemen een grotere symboolstructuur maakt, in dit geval woorden. Figuur 7 geeft een voorbeeld van hoe zo een model er kan uitzien. Als tevens het doorlopen pad door de modellen gevonden moet worden, dan wordt het Viterbi algoritme toegepast.

 

Figuur 7 Language Model (Helpbestand van Philips Speechmagic)

 

Bij continue spraakherkenning zijn er geen grenzen gegeven tussen de verschillende woorden. Het  Viterbi algoritme wordt dan uitgebreid met een zogenaamde 'token passing' optie. Eerst moet een netwerk worden aangelegd waarin alle woorden in dit netwerk zijn opgebouwd uit de HMM's van de fonemen. In alle knopen van dit netwerk bevinden zich tokens, die aangeven wat de maximale kans is om in die knoop te komen en tevens de volgorde van de modellen die daarvoor al doorlopen is. Door tokens door te geven wordt het pad bijgehouden dat de hoogste kans heeft de inputvectoren te herkennen. Zo worden alle modellen parallel doorlopen. Als het eind van een woord bereikt is wordt het laatste token -het exit- token- weer teruggevoerd naar de begintoestanden van alle woorden. Daar vindt de Recording Decision procedure plaats: Elk tijdstip wordt er van alle terugkomende exittokens de beste gekozen en er wordt een Word Link Record (WLR) aangelegd, waarin de Forward probability, het tijdstip, het verkozen woord en een link naar het vorige woord opgenomen is. Op die manier ontstaat een heel netwerk van woorden, dat van rechts naar links doorlopen kan worden. Het netwerk blijft zich na elk tijdsframe uitbreiden met een WLR  totdat de laatste inputvector verwerkt is. Dan wordt de WLR met de hoogste Forward probability gekozen en via de links wordt de herkende zin afgelezen.

 

Bovenstaand algoritme zal in praktijk veel tijd in beslag nemen, vanwege alle token passings en Forward algoritmes die uitgevoerd moeten worden. Daarom zal in praktijk Beam Search toegepast worden. Bij Beam Search zijn HMM's ofwel actief ofwel inactief. In het begin zijn alle modellen actief, maar ze worden gedesactiveerd als hun Forward probability onder een waarde daalt, die afhankelijk is van de hoogste Forward probability in alle actieve modellen. Pas als deze inactieve modellen opnieuw een token ontvangen van een vorig model, worden ze weer actief en kunnen ze zelf ook tokens doorgeven. Op deze manier wordt het aantal tokens dat per tijdsframe wordt doorgegeven beperkt en daarmee ook de rekentijd.

 

Een ander probleem bij het primitieve token passing model is het feit dat er nogal veel beslag wordt gelegd op het werkgeheugen. Alle Word Link Records moeten namelijk in het geheugen blijven staan totdat de gehele spraakuiting verwerkt is. Dit is niet nodig omdat veel WLR's niet op actieve paden liggen. Daarom laat men alleen veelbelovende paden bestaan. Dit wordt Partial Traceback and Garbage collection genoemd.

 

Een derde aanvulling op het primitieve token passing model is de toevoeging van een Language Model (paragraaf 2.2.3.3). Op grond van deze N-Grams zullen sommige paden niet doorzocht worden, wat weer reductie van de rekentijd betekent.


Hoofdstuk 3     Nederlandstalige spraakherkenners

 

In dit hoofdstuk worden 2 Nederlandstalige spraakherkenners besproken. Hierbij zal er vooral gekeken worden naar de mogelijke integratie met een workflow van beide producten. Ook de praktische werking en de technische aspecten van beide pakketten worden hier behandeld. Per product worden dan de verschillende processen en de verschillende componenten besproken.

 

3.1        Philips Speechmagic v 3.1

SpeechMagic v3.1 is het continue spraakherkenningprogramma van Philips. SpeechMagic bestaat niet als afzonderlijk systeem, maar is uitdrukkelijk bedoeld om geïntegreerd te worden in workflow-geöriënteerde applicaties. Deze integratie kan gebeuren met een traditionele API of met ActiveX. Verder is er een hele reeks zogenaamde contexten beschikbaar. Contexten bestaan uit een Language Model en een lexicon die specifiek gericht zijn op een bepaald toepassingsgebied, zoals bijvoorbeeld advocatuur, radiologie,... Deze contexten kunnen afzonderlijk aangekocht worden, afhankelijk van de specifieke eisen van de gebruiker en van het toepassingsgebied van de applicatie. Naast deze contexten wordt er door SpeechMagic ondersteuning geboden voor 4 talen: Engels, Duits, Frans en Nederlands.


Een groot voordeel van SpeechMagic is de client-server mogelijkheid van het programma. In dit systeem staat de client enkel in voor het opnemen van het gesproken signaal. Door gebruik te maken van de CELP_FB
[18] compressie is hier slechts 14.5 MB/uur nodig op de locale harde schijf voor de tijdelijke opslag van een dictaat. Een nadeel van deze compressie is wel dat er heel wat rekenkracht voor vereist is. Praktisch is er minstens een Pentium II 300 Mhz nodig. Indien er gewone ongecompresseerde PCM-geluidsbestanden[19] gebruikt worden, beperken de minimumvereisten zich tot een Pentium 166 Mhz. Eenmaal het dictaat af is kan het doorgestuurd worden naar de server voor de omzetting in tekst.

.

3.1.1       Processen in Speechmagic

3.1.1.1       Training

De bedoeling van de training is het opmaken en aanpassen van een gebruikersspecifiek referentiebestand. In dit bestand zit alle informatie die nodig is voor de herkenning van de spraak die eigen is aan een bepaalde gebruiker. Concreet wordt er vertrokken met een referentiebestand voor een man of een vrouw. Dit referentiebestand wordt dan na een initiële training van minimum 10 minuten aangepast aan de spreker. Tijdens deze initiële training moet de gebruiker een tekst voorlezen. Nadat het initiële referentiebestand is opgesteld, wordt het incrementeel aangepast. Dit wil zeggen dat er steeds rekening wordt gehouden met de vorige aanpassingen. Vooral voor de akoestische aanpassing is dit van belang, omdat er voor een goede akoestische aanpassing minstens een uur gesproken gegevens noodzakelijk zijn en deze gegevens praktisch nooit in een keer beschikbaar zijn.

 

3.1.1.2       Herkenning

Tijdens de herkenning worden de gesproken signalen omgezet in een reeks vectoren. SpeechMagic berekent vervolgens de kansen van alle varianten van al de mogelijke woorden, en kiest het woord (of de woorden) met de hoogste waarschijnlijkheid van voorkomen. Hierbij wordt gebruik gemaakt van de regel van Bayes zoals werd uitgelegd in paragraaf  2.1.


                      P (A | W) * p (W)
P (W | A) = 
                           Constante

A = de akoestische vector
W = een bepaald woord of een opeenvolging van woorden
P (A | W) = kans dat het inputsignaal A het woord W voorstelt =  Akoestisch Model
P (W) = kans dat een woord of een woordenreeks gebruikt wordt (onafhankelijk van hetgeen ingesproken werd) = Language Model


Aangezien de kansen van de woorden enkel onderling vergeleken moeten worden, kan in de oorspronkelijke formule van Bayes de noemer P (A) vervangen worden door een constante of gewoon weggelaten worden.

 

 De akoestische referenties die nodig zijn voor de spraakherkenning zijn afhankelijk van de spreker. Zij geven een representatie van de typische fonemen van de spreker. Voorts houdt SpeechMagic ook nog rekening met de gekozen context voor een bepaald dictaat om dit dictaat te herkennen.

 

3.1.1.2.1      Lexicon
Het lexicon van SpeechMagic houdt voor ieder woord in elke context volgende gegevens bij

 

1.        Minstens 1 fonetische transcriptie, maar er zijn er meerdere mogelijk. Wanneer een nieuw woord opduikt, wordt dit woord automatisch omgezet naar zijn fonetische transcriptie.

2.        Formatting flags: dit is bijvoorbeeld de CAP flag die bepaalt dat de volgende letter een hoofdletter moet zijn. Voorts zijn er nog flags om spaties en dergelijke te plaatsten.

3.        De woordklasse: er worden 9 woordklassen gebruikt zoals NC (nummers), EN (opsommingen), DM (maand), TM (minuten),...

4.        De datum waarop het woord voor het laatst gebruikt werd

5.        De frequentie van gebruik van het woord

6.        Nummer voor de interne identificatie van het woord

 

Naast het contextgebonden lexicon heeft SpeechMagic ook nog een background lexicon. Dit biedt het herkenningssysteem een lexicon aan voor woorden die niet in het specifieke lexicon voorkomen. Het gaat hier voornamelijk om zeer algemene woorden. Dit lexicon dient wel afzonderlijk geïnstalleerd te worden. Periodiek worden de oudste en minst gebruikte woorden uit het lexicon verwijderd, dit om de grootte van het lexicon wat binnen de perken te houden.

 

3.1.1.2.2      Language Model

Het Language model hoort steeds bij een bepaalde context. Zoals hoger reeds vermeld, wordt het afgeleid van een initieel Language Model en vervolgens aangepast tot een gebruikersspecifiek model.

 

3.1.1.2.3      Specifieke grammatica

Dit is eigenlijk een tekst post processor en is bijvoorbeeld verantwoordelijk voor het omzetten van voluit geschreven cijfers, data,... in het juiste formaat. Dit gebeurt bij SpeechMagic in een Finite State Network dat eigen is aan de bepaalde context.

3.1.1.3       Correctie

De Correctie Editor dient om woorden die niet, of fout herkend werden te verbeteren. Bij SpeechMagic werkt de Correctie Editor als een add-in voor Word, meer bepaald gaat het om een template met de nodige macro’s om het dictaat synchroon met de cursor te laten afspelen. Het uitvoeren van deze macro’s blijkt in praktijk niet zo evident.
Philips biedt wel de mogelijkheid om het afspelen van de tekst te controleren met een pedaal (de zogeheten footswitch).

 

3.1.1.4       Aanpassing

Hier kan een onderscheid gemaakt worden tussen de contextaanpassingen en de akoestische aanpassingen.

 

3.1.1.4.1      Context aanpassingen

Alle nieuwe woorden worden uit een verbeterd tekstbestand gehaald. Deze lijst wordt dan gebruikt om het lexicon bij te werken en om het Language Model aan te passen. Om het lexicon correct bij te werken wordt op het moment van de update aan de gebruiker gevraagd of het om een ‘normaal’ of om een ‘speciaal’ woord gaat. Indien het een speciaal woord is, moet het programma geholpen worden bij het opstellen van de fonetische transcriptie. De gebruiker kan ook ingeven dat het woord uit het lexicon verwijderd moet worden.

 

3.1.1.4.2      Language Model

Om het Language Model bij te werken gebruikt SpeechMagic een acoustic daemon. Deze daemon zorgt er voor dat dictaten die volledig verbeterd werden, een tweede keer verwerkt worden, met dit verschil dat er nu een aangepast lexicon beschikbaar is. Op basis van deze herkenning wordt het referentiebestand van de gebruiker dan bijgewerkt.

 

3.1.2       Lifecycle van een citaat

  1. In een eerste fase wordt het dictaat ingevoerd op de client. Het dictaat wordt dan doorgestuurd naar de herkenningsserver en krijgt de status ‘recognition pending’.
  2. Wanneer de server klaar is met andere herkenningsprocessen van vorige taken, kan het nieuwe dictaat verwerkt worden. De status is nu ‘recognition running’
  3. Nadat de herkenning gebeurd is, is het ingesproken dictaat beschikbaar als tekst. Deze tekst kan dan nagekeken worden door de gebruiker, die het dictaat heeft ingesproken. Deze taak kan eventueel ook vervuld worden door een andere persoon die daarvoor bevoegd is. Het dictaat krijgt nu de status ‘correction pending’.
    Een andere mogelijkheid is dat het dictaat helemaal niet meer verbeterd wordt.
  4. Nadat het dictaat werd verbeterd, wordt er een zogenaamde UWL (Unknown Word List) opgesteld. Deze lijst met onbekende woorden wordt dan zodanig verwerkt dat hij kan dienen om de woordenschat van de spraakherkenner bij te werken. Dit noemt men de Lexicon Update. Nadat het lexicon van de spraakherkenner is bijgewerkt, kan optioneel ook het Language Model bijgewerkt worden. Het Language Model werd reeds vroeger besproken en is verantwoordelijk voor het herkennen van de woorden.
  5. In een laatste fase is er een acoustical adaptation. Deze stap bestaat uit 2 substappen. In de eerste substap vindt er een her-herkenning van het dictaat plaats, rekening houdend met de correcties zoals die werden ingegeven. De tweede substap is verantwoordelijk voor de akoestische training. Deze akoestische training houdt een bestand bij dat dient als referentie voor de nodige aanpassingen aan het dictaat ten gevolge van ruis en achtergrondgeluiden.

 

3.1.3       ActiveX Componenten

  1. Recorder
    Deze component bevat een interface om geluid op te nemen. Zaken zoals het benoemen van het geluidsbestand en wijzigingen aan een dictaat worden door deze component uitgevoerd. Op zich is dat niets speciaals, maar het voordeel van deze component is dat hij kan bestuurd worden met de SpeechMike van Philips. De SpeechMike is een microfoon die uitgebreid is met enkele knoppen om in een geluidsbestand te navigeren.
  2. Authentication
    Elke gebruiker van SpeechMagic moet zichzelf identificeren door zijn naam en eventueel een paswoord in te geven. Om spraakherkenning te kunnen uitvoeren, moet SpeechMagic weten welke context er dient gebruikt te worden. De Authentication component heeft 2 drop down lijsten en een editveld om deze gegevens te bepalen. De eerste lijst bevat alle gebruikersnamen en de tweede lijst alle contexten. Aangezien contextlicenties per gebruiker betaald worden, dient de contextlijst enkel de contexten van de geselecteerde gebruiker aan te bieden. Het editveld dient om een paswoord in te geven.
  3.  JobList
    De JobList component geeft een tabel weer met alle uitstaande jobs in SpeechMagic. Per uitstaande jobs wordt volgende informatie weergegeven: Jobnaam, beschrijving, auteur, context, prioriteit, lengte van het dictaat en job status. Uiteraard kan men filters en volgorderegels bepalen voor deze tabel.
  4. Action
    Deze component blijft onzichtbaar voor de eindgebruiker en dient enkel om een job naar de server te sturen voor herkenning. Alvorens een job kan doorgestuurd worden, dient men de auteur, de prioriteit, de context en een beschrijving van het dictaat aan het dictaat te hechten. Al deze informatie kan gemakkelijk uit de andere componenten gehaald worden.

 

3.2        Lernout & Hauspie Voice Xpress 4 SDK

Lernout & Hauspie (L&H) levert bij zijn Voice Xpress 4 een SDK[20] die programmeurs de mogelijkheid biedt de L&H Voice Xpress continue spraaktechnologie te integreren in zelfgebouwde applicaties. De SDK kan enkel gebruikt worden als Voice Xpress geïnstalleerd is. Net zoals bij SpeechMagic van Philips, zijn er ook hier verschillende contexten beschikbaar. Lernout&Hauspie noemt ze ‘specialiteiten’, maar ze komen volledig overeen met de contexten zoals die bij Philips SpeechMagic genoemd worden. Naast de 4 beschikbare talen wordt er bij Voice Express nog een onderscheid gemaakt tussen het Vlaams en het Nederlands.

 

De SDK van Lernout&Hauspie biedt enkel de mogelijkheid om applicaties uit te breiden met real-time spraakherkenning. Ook de server-client architectuur zoals die bij SpeechMagic voorkomt, behoort niet tot de functionaliteiten van Voice Express. Indien de gebruiker  dus een batch-processing systeem wenst, moet dit expliciet geprogrammeerd worden in de hosttaal. Ook de client-server uitbreiding is de volledige verantwoordelijkheid van de programmeur.


Voice Express bevat naast de spraakherkenningcomponenten ook text-to-speech componenten en een Language Tool. De Language Tool biedt de applicatieontwikkelaar de mogelijkheid een bestaande specialiteit aan te passen door er woorden aan toe te voegen en de statistische eigenschappen van bepaalde woorden te veranderen. De Language Tool zorgt voor de verwerking van deze aanpassingen zodat ze onafhankelijk van de spreker kunnen gebeuren.

 

3.2.1       Processen in Voice Xpress

Aangezien Voice Xpress enkel in real-time kan werken, is er hier geen sprake van verschillende processen. Zoals reeds vermeld in de vorige paragraaf wordt de ontwikkeling van de workflow van een dictaat volledig aan de applicatie-ontwikkelaar overgelaten. Zodoende is er ook niet echt sprake van de lifecycle van een dictaat in Voice Xpress.

3.2.2       ActiveX componenten

  1. DICTec control        
    De DicTec control is een component die dient om op een eenvoudige manier spraakherkenning in een applicatie in te bouwen. De component verzorgt enkel een interface naar Voice Xpress. Vandaar dat de SDK ook niet kan gebruikt worden zonder Voice Xpress. Het voordeel hierbij is dat ontwikkelaar zich niet hoeft bezig te houden met sprekersprofielen, aangezien die in Voice Xpress worden aangemaakt.           
    De component is wel verantwoordelijk voor correcties, Inverse Text Normalization (ITN) en zogenaamde Glossary commando’s’s. ITN dient om hoofdletters, spaties, ... te plaatsen en zorgt ook voor de opmaak van datums, eenheden,... (cfr. Specifieke Grammatica in SpeechMagic). De verdere verwerking van een herkende zin en bijkomende functionaliteiten zoals tekstselecties en bookmarks in de herkende zin, worden volledig aan de ontwikkelaar overgelaten.
  2. ERTEC Control       
    Een Rich Text Box is een gewone Text Box die naast gewone tekst ook veranderingen in het lettertype en tekstopmaak toelaat. De ERTEC component is zo een Rich Text Box die uitgebreid is met spraakherkenningsfunctionaliteit. Hij kan zowel continue spraak herkennen als commando’s aanvaarden. Verder gedraagt hij zich volledig als een gewone Rich Text Box.
  3. IVEC Commmand    
    Deze component maakt het mogelijk om de command & control van een applicatie met spraak te sturen. De component initialiseert automatisch de speech engine, de audio-devices en de grammatica bestanden. Indien de ontwikkelaar deze initialisaties zelf wil doen, dient de TiVEC control gebruikt te worden. (zie puntje 5.TVEC)           
    Command & control houdt in dat men het aanroepen van bepaalde events laat afhangen van de gesproken input. Een tekstbestandje (Context-free grammar CFG) bepaalt welke woorden of zinnen een functionaliteit krijgen. De events die men er aan associeert moeten dan at design-time of at run-time bepaald worden in de IVEC component.
  4. IVEC GUI     
    Deze component biedt « Say What You See ».
    Wanneer de component actief gemaakt wordt, krijgt het huidige venster voice-control. De gebruiker kan dan met zijn stem tekstbuttons, menu’s en andere controls besturen. De component leidt zelf af wat de mogelijkheden zijn door in de menu’s en tekstboxen te kijken. Deze afleiding gebeurt op een intelligente manier door structuren en zinnen rond de control te bouwen. De gebruiker kan dan bijvoorbeeld zowel ‘select ‘OK’ ’, ‘press ‘OK’ ’ als  ‘OK’ zeggen om OK te selecteren op een button. Bovendien kan de ontwikkelaar zelf nog alternatieven ingeven voor een bepaalde control.
  5. TVEC
    TVEC bestaat uit twee componenten die samen de interface naar de speech recognition engine vormen. Een eerste component TIVEC is onzichtbaar en laat toe om audio settings en sprekersprofielen in de speech recognition engine te laden. Een tweede component LHSpeechToolbar is wel zichtbaar en laat de eindgebruiker een toolbar zien met instellingen van de speech engine.
  6. TTSTec
    Dit is een text-to-speech control. De achterliggende engine is ook hier weer Voice Xpress. Men kan onder meer een speak method (man of vrouw) en een uitgang (audio-out of wav-file) bepalen.

 

3.3        Uiteindelijke keuze

 


Hoofdstuk 4      Toepassing : spraakherkenning voor pakketten van ACC.

 

4.1        ACC

ACC-SSC-INTEC is een groepering van drie dienstverlenende organisaties die samenwerken om aan de gezondheidszorg- en welzijnsvoorzieningen een optimale service te kunnen bieden. Samen staan zij in voor de dienstverlening aan 881 aangesloten instellingen waaronder ziekenhuizen, rusthuizen, instellingen voor kind-, jeugd- en gehandicaptenzorg en medische, sociale en pedagogische instellingen.

 

SSC (Sociaal Secretariaat Caritas VZW) houdt zich als erkend sociaal secretariaat  vooral bezig met loonberekingen en juridisch advies in de welzijnssector. De leden kunnen ook rekenen op assistentie bij formaliteiten die zij als werkgever moeten vervullen.

 

INTEC is een CV die zorgt voor een prestatiegebonden dienstverlening zoals tarifering, facturering voor de ziekenhuizen en individuele dienstverlening. Verder bemiddelt deze afdeling bij de aankoop of verkoop van apparatuur en software.

 

ACC staat voor Administratie Centrum Caritas en is een VZW die al meer dan 35 jaar informatiseringsoplossingen aanbiedt, exclusief voor de gezondheidszorg en welzijnssector. De voornaamste taak is het uitwerken en het aanbieden van geïntegreerde totaaloplossingen voor de gezondheidssector. Dit houdt een automatisatie in van zowel de administratieve, de financiële als de medische of medisch-technische en zorgondersteunende taken van een bedrijf uit de gezondheidssector. Verder worden ook logistieke assistentie en andere organisatorische aspecten verzorgd. Momenteel werkt ACC met 525 aangesloten instellingen. Tabel I toont de verdeling van deze 525 instellingen naar hun activiteiten.


Tabel I : Verdeling naar activiteiten van instellingen (http://www.accnet.be)

Aangesloten instellingen

 

Ziekenhuizen

65

Rusthuizen en rust- en verzorgingstehuizen

227

Voorzieningen jeugd- en gehandicaptenzorg

98

Kinderdagverblijven

74

Medische, sociale en pedagogische instellingen

 

- centra voor geestelijke gezondheidszorg

10

- congregaties

8

- beschut wonen

21

- psychiatrische verzorgingstehuizen

7

- diversen

15

TOTAAL

525

 

 

Om deze taken zorgvuldig uit te voeren, dient ACC lange termijnrelaties met zijn klanten aan te gaan. Alle producten worden ontwikkeld in nauw overleg met en op maat van de gebruikers uit de diverse ziekenhuizen, rusthuizen, kinderdagverblijven,... In uitzonderlijke gevallen worden soms ook individuele aanpassingen doorgevoerd. Verder is ook het onderhouden, het up-to-date houden en het verbeteren van de softwarepakketten een permanente taak. Zo zijn vele functionaliteiten van de verschillende pakketten sterk afhankelijk van de wettelijke bepalingen inzake de facturering. Elke wetswijziging met betrekking tot deze bepalingen moet dan ook een onmiddellijke aanpassing in de functionaliteit van pakketten tot gevolg hebben. Maar ook aan de nieuwe ontwikkelingen dient er voldoende aandacht besteed worden. Er worden constant nieuwe modules aan de bestaande pakketten toegevoegd. Zo werd er onlangs een integratie met SAP verzorgd voor de applicatie voorraad- en aankoopbeheer in ziekenhuizen.

 

4.2        Taaltechnologie en ACC-software

De bedoeling van het project dat gerealiseerd werd bij ACC was vooral de nodige voorbereidingen te treffen om spraaktechnologie te introduceren in de ACC-toepassingssoftware. Het ideale geval zou zijn dat vanuit de gedicteerde protocols zoals die door een dokter ingesproken worden, de nodige codering rechtstreeks en automatisch zou gegenereerd worden. Deze codering gebeurt door middel van Minimale Klinische Gegevens (MKG’s). De MKG’s zijn de gegevens die door de overheid vereist zijn telkens iemand in een ziekenhuis wordt opgenomen. Ze worden opgesteld per aandoening van een patiënt en dienen vooral voor de budgettering van de subsidies die een ziekenhuis verkrijgt. Verder kunnen ze ook nuttig zijn om de geschiedenis van een patiënt na te gaan. Naast de diagnosen zoals die door een dokter gesteld worden, bevatten MKG’s ook gegevens over de verschillende ingrepen of procedures die uitgevoerd werden. Deze procedures kunnen opgesplitst worden in chirurgische en niet-chirurgische ingrepen.

 

Het is duidelijk dat de informatie die vereist is voor het opstellen van MKG’s vooral van de verschillende dokters komt. De praktijk wijst echter uit dat deze informatie meestal onvolledig is. Zo stellen vele dokters zich tevreden met het onzorgvuldig vermelden van slechts 1 diagnose en 1 procedure. Daarom worden deze gegevens in de praktijk steeds nagekeken door een medische registratie-equipe. Zij halen vele fouten uit de rapporten van de dokters, maar kunnen uiteraard niets verhelpen aan de onvolledigheid. De medische registratie-equipe is ook verantwoordelijk voor het opstellen van ICD-9-CM-codes. ICD-9-CM codes zijn eigenlijk gewoon unieke identificaties van alle mogelijke aandoeningen. Het opstellen van deze codes is in de praktijk een tijdrovende bezigheid die eigenlijk alleen bestaat uit het opzoeken van ICD-9-CM-codes voor elke aandoening die vermeld wordt in een medisch dossier dat door een arts werd opgesteld. De ICD-9-CM-codes zijn zeer belangrijk bij het opstellen van MKG’s.


Een eerste stap in de uitbreidingen van de ACC-software zou bestaan uit het automatisch genereren van deze ICD-9-CM-codes met behulp van taaltechnologie. Het bedrijf L&C biedt hiervoor een zogenaamde codefinder aan.
Een tweede stap is het uitbreiden van de bestaande software met spraakherkenning (zie hoofdstuk 6).

 

  • Taal -> codering (L&C)
  • Spraak -> taal (L&H, Philips,…)

 

ACC beschikt reeds over een pakket voor het registreren van Minimale Klinische Gegevens. Het initiële opzoekwerk van de correcte ICD9-codes op basis van medische informatie is momenteel voornamelijk een manueel werk, waarbij sterk gesteund moet worden op de ervaring, expertise en inzichten van de codeur. De L&C-codefinder zal precies op dit vlak ondersteuning bieden aan professionele codeurs. Het systeem zal op basis van een aantal medische diagnoses (of een combinatie van trefwoorden) die ICD9-codes voorstellen die relevant zijn voor de ingave. De belangrijkste voordelen van deze manier van werken, zowel voor het ziekenhuis als voor de registratiedienst zelf, zijn:

 

  • Snelle en efficiënte computerondersteuning voor de codeur, ook (en vooral) bij het coderen van moeilijke of minder frequente diagnoses of procedures
  • De mogelijkheid om een meer precieze en specifieke ICD-9-codering op te bouwen, die rekening houdt met speciale gevallen, complicaties, enz.
  • Een houvast voor de codeurs om waar nodig bijkomende informatie te vragen aan de geneesheren of op te zoeken in medische dossiers of ontslagbrieven.
  • Meer consistentie in de codering zelf (minder variabiliteit tussen individuele codeurs, dossiers, enz.), uitermate in het kader van de controles door het Ministerie van Volksgezondheid.
  • Sneller opleidingstraject voor nieuwe codeurs.

 

4.3        Medisch dossier

Het pakket dat in aanmerking komt voor een uitbreiding met spraaktechnologie heet ‘Medisch Dossier’. Dit pakket heeft als doel het administratief aspect van patiëntendossiers  in ziekenhuizen te beheren. Aldus past ‘Medisch Dossier’ in een waaier van softwarepakketten die praktisch de hele welzijnssector beslaan (zie Figuur 8). De bedoeling van de uitbreiding van ‘Medisch Dossier’ met spraakherkenning  is vooral om de nodige voorbereidingen te treffen om later spraaktechnologie te introduceren in de andere pakketten van ACC. In het licht van deze thesis geeft het practisch programmeren van deze uitbreiding een idee van de mogelijke problemen en de aandachtspunten die kunnen optreden bij het uitbreiden van een softwarepakket  met spraakherkenning.

 

Figuur 8 Plaats van 'Medisch Dossier' binnen het aanbod van ACC (http://www.accnet.be)

 

4.3.1       Waarvoor dient ‘Medisch Dossier’?

De inschrijving van een patiënt wordt gedaan in een administratief systeem. Van zodra deze inschrijving gedaan is, wordt ze overgenomen door het ‘Medisch Dossier’ systeem. Vanuit het ‘Medisch Dossier’ kan men dan administratieve informatie over de patiënt opvragen, maar verder kan men deze informatie niet wijzigen.
Bij het kiezen van een patiënt kan van verschillende elementen gebruik gemaakt worden, zoals bijvoorbeeld de naam, de voornaam, geboortedatum,geslacht,...Een andere mogelijkheid om een patiënt te selecteren is door de computer van waaruit gewerkt wordt, uit te rusten met een magnetische kaartlezer. De patiëntenkaart wordt dan gebruikt om rechtstreeks en snel het medisch dossier van een patiënt op te vragen.

 

Eenmaal een patiënt geselecteerd is, kan men vanuit de patiëntnavigator via ‘patiënt info’ extra administratieve gegevens raadplegen. Deze gegevens kunnen dan gebruikt worden om semi-automatisch brieven en formulieren op te stellen.
Een belangrijke functie van ‘Medisch Dossier’ is het kunnen opvolgen van de vooruitgang van aangevraagde technische onderzoeken en interdisciplinaire consultaties. Zowel het al dan niet beschikbaar zijn van resultaten als de eventuele data van afspraken voor onderzoeken kunnen hier in een scherm gevolgd worden. In dat zelfde scherm worden ook ontvangen aanvragen voor advies weergegeven.


Eens deze medische gegevens beschikbaar gesteld worden aan andere gezondheidswerkers via een computersysteem kunnen diagnostische of therapeutische beslisslingen genomen worden op basis van deze gegevens. Om de opvolgbaarheid van deze secundaire beslissingen te kunnen waarborgen mogen deze gegevens nooit meer gewijzigd of verwijderd worden. Anderzijds, als er fouten geslopen zijn in de gegevens moet men het verder gebruik ervan beletten en tevens de verbeterde gegevens ter beschikking stellen. Om aan deze voorwaarden te voldoen werd de volgende werkwijze in het programma geïmplementeerd:

 

  1. Als een document, aanvraag of voorschrift voor het eerst aangemaakt wordt, dan wordt het bestaan ervan zichtbaar voor andere gebruikers maar kan de inhoud nog niet opgevraagd worden. Ondertussen kan het document opgeslagen worden, en afwisselend door verschillende personen (bijvoorbeeld arts en secretaresse) bewerkt en aangevuld worden.
  2. Eens het document als afgewerkt beschouwd wordt zal het vrijgegeven worden voor inzage.
  3. Als de oorspronkelijke auteur, medewerker of secretaresse fouten ontdekt in het vrijgegeven document wordt een nieuwe versie gestart.
  4. Als de wijziging vrijgegeven wordt, zal de nieuwe versie van het document opnieuw beschikbaar komen voor andere medewerkers. Alle gebruikers die toegang hebben tot dit document kunnen tevens de vorige, foutieve versies van het document expliciet opvragen in hun oorspronkelijke vorm. Op deze wijze blijft de medico-legale verantwoording verzekerd.

 

Sommige bewerkingen in het medisch dossier zijn bedoeld om informatie aan het dossier zelf toe te voegen, terwijl andere bedoeld zijn als orders aan andere diensten. Voorbeelden hiervan zijn: labo-aanvragen, radiologie-aanvragen,...

4.3.2       Hoe en waar kan spraakherkenning gebruikt worden

Een groot deel van ‘Medisch Dossier’ is bedoeld om de workflow van de verschillende documenten doorheen een instelling op te volgen. Het opmaken van verslagen gebeurt in de module tekstredactie van ‘Medisch Dossier’. Na integratie van spraakherkenning in deze module, zou de gebruiker moeten kunnen kiezen hoe hij zijn document tot stand brengt. Als hij kiest voor het dicteren van een tekst, dan staat het hem nog steeds vrij te bepalen hoe zijn dictaat omgezet zal worden naar tekst, namelijk door manuele transcriptie[21]  of met behulp van spraakherkenning.

 

Figuur 9 geeft de verschillende manieren weer waarop een document verwerkt kan worden en de workflow die hiermee gepaard gaat. Deze figuur maakt duidelijk welke plaats ACC toekent aan spraakherkenning binnen het geheel van de tekstredactie in het pakket ‘Medisch Dossier’. Opmerkelijk is dat er in alle gevallen een validatie van de documenten vereist wordt, welke ook de manier van ingave is.

Figuur 9 Workflow van een document (ACC)

 

In de vorige paragraaf werd reeds vermeld dat aan de hand van bestaande gegevens in ‘Medisch Dossier’ een document of een dossier kan opgesteld worden over een patiënt. Dit gebeurt niet in de module tekstredactie. De module die deze dossiers samenstelt komt echter in een later stadium ook in aanmerking voor een uitbreiding met spraakherkenning. Het doorgeven van de gegevens uit het ‘Medisch Dossier’ gebeurt in deze module door een template. Deze template wordt dan in MS Word geladen waarna de gebruiker verdere wijzigingen kan aanbrengen met MS Word. Een uitbreiding met spraakherkenning voor MS Word kan momenteel met elk standaard-spraakherkenningspakket gebeuren en zal hier dan ook niet nader beschreven worden.


Hoofdstuk 5     Proefproject in Delphi

Gezien de gestructureerde aanpak die Delphi aan de aangebruiker oplegt, en de ervaring die reeds opgedaan werden in deze ontwikkelingsomgeving, werd eerst een Delphi-applicatie geschreven die gebruikt maakt van de Speechmagic ActiveX-componenten. Dit in de eerste plaats om de verschillende componenten te leren gebruiken en vooral om goed vertrouwd te geraken met de properties, methods en events van deze componenten.

 

In een eerste fase werd een stand-alone installatie doorgevoerd, pas in een tweede fase werd SpeechMagic in een netwerk ingeschakeld.

5.1        Stand-alone installatie

5.1.1       Hardware

Bij een stand-alone installatie is een zelfde PC zowel een recognition- en fileserver als een werkstation. Hiervoor werd een AMD ATHLON 650 Mhz gebruikt met 128MB RAM. Deze PC was uitgerust met een SpeechMike van Philips.

 

5.1.2       Installatie

Omwille van de stabiliteit werd de PC uitgerust met Windows 2000. De installatie kon dan beginnen op een ‘clean’ systeem. Na de installatie van het SpeechMagic programma en de installatie van het workstationprogramma op dezelfde PC, vraagt de setup om een reboot. Dit omdat tijdens de installatie DAO[22] geïnstalleeerd wordt, en omdat de driver voor de Speechmike geactiveerd moet worden. Na een reboot dook een eerste probleem op met een DLL. Het installatieprogramma gaf volgende error:

 

Unable to call DLLRegisterServer

Unable to load file : c:\Progam Files\Common Files\System\OLE DB\msdaps.dll to register it.

 

Bij nader inzicht bleek het bestand wel te bestaan, dus daar zat de fout niet. Uiteindelijk werd de dll dan maar manueel geregistreerd met:

 

Regsrv32.exe c:\Progam Files\Common Files\System\OLE DB\msdaps.dll

 

Op zich bleek dit te lukken, maar toen de herkenningsserver moest opgestart worden gaf ook deze een foutmelding:

 

Smrcgsrv.exe: Unable to find msdaps.dll

 

Na heel wat reboots en configuratie-aanpassingen werd er besloten om de mensen van Philips te contacteren in verband met het probleem. Zij wisten ons enkel te vertellen dat er inderdaad problemen waren met Windows 2000, maar dat Windows NT 4.0 met service misschien wel een oplossing kon bieden. Vervolgens werd de installatie geprobeerd met NT 4.0 zonder service pack, met service pack 5 en met service pack 6. Telkens bleef dezelfde fout met de msdaps.dll opnieuw opduiken. De mensen van Philips werden nogmaals gecontacteerd en het enige passend antwoord dat zij konden geven was dat een installatie van MS Access eventueel wel kon helpen, aangezien het probleem iets met OLE DB te maken had. MS Access werd dan geïnstalleerd, maar ook hier weer zonder resultaat. Uiteindelijk werd besloten om voor de server de installatie in Windows 98 eens te proberen. Dit bleek wel te lukken en de problemen met de dll bleven uit.

 

5.1.3       Configuratie

Eenmaal alles geïnstalleerd is, kan de configuratie beginnen. Dit houdt in dat de recognitionserver en de dispatcher een naam moet krijgen, en de verschillende gebruikers van het systeem moeten aangemaakt worden. Uiteraard zijn in dit geval de herkenningsserver en de dispatcher gewoon de locale PC. Vervolgens moeten ook de verschilllende achtergronden en de specifieke contexten (Advocaat, Radiologie,...) geïnstalleerd worden. Dit verliep allemaal probleemloos. Een aandachtspunt hierbij is wel dat de eerste gebruiker die aangemaakt moet worden ‘Admin’ moet heten en er geen passwoord voor deze gebruiker kan ingesteld worden.


Bij het uittesten van de verschillende applicaties bleek alles goed te werken, behalve de correctie-editor. Aangezien de correctie slechts in de laatste fase plaatsvindt, werd er besloten met de huidige configuratie voort te gaan voor de programmatie.

 

5.1.4       Delphi-applicatie

Dit programma is vooral bedoeld om de volgorde van aanroepen van de verschillende methodes en de programmastructuur te illustreren. Specifieke Delphi code wordt hier zo veel mogelijk gemeden. Op die manier kan er later, wanneer bijvoorbeeld naar een andere ontwikkelingsomgeving zoals Oracle Forms (zie paragraaf  6.1) wordt overgegaan, teruggekeken worden naar het Delphi-programma om de structuur van het nieuwe programma te achterhalen.


Om de ActiveX-componenten in Delphi te krijgen, moet men gewoon ‘Component-import ActiveX control’ in menu’s van Delphi kiezen. Voorwaarde om de componenten te importeren is wel dat de componenten in Windows geregistreerd zijn, maar dit gebeurt automatisch bij de installatie van SpeechMagic. Indien het de bedoeling is om het uiteindelijke programma te laten installeren zonder dat er een installatie van Speechmagic nodig is, moet er wel rekening gehouden worden met het registreren van de componenten. Dit moet dan gebeuren in het installatieprogramma van het uiteindelijk programma. Na de registratie kunnen de componenten dan gebruikt worden in elke applicatie die ActiveX compatibel is.

 

De method Initialize is verantwoordelijk voor de initialisatie van de control. Ze zorgt voor de aangepaste taal die in de interface gebruikt wordt en geeft de properties van de control de default waarden. Initialize moet voor alle componenten van SpeechMagic aangeroepen worden om de componenten te kunnen gebruiken. Er zijn vier componenten nodig om met de herkenningsengine van SpeechMagic te communiceren: SMRecorder, SMAction, SMAuthentication en SMJoblist. De functionaliteit van deze vier componenten werd reeds eerder besproken (zie paragraaf 3.1.3). Het programma begint dan ook met de initialisatie van deze vier componenten.

 

Eenmaal de vier componenten geïnitialiseerd zijn, kan er begonnen worden met het ingeven van een dictaat. Dit lukt in ieder geval als er een SpeechMike aanwezig is. De SpeechMike bevat naast en microfoon en een trackball, ook 6 knopjes om doorheen een geluidsbestand te navigeren. Door op het ‘record’ knopje te duwen en vervolgens op de ‘play’ knop start de opname.

 

5.1.4.1       SMRecorder

Wanneer er geen SpeechMike is, moet de programmeur zelf instaan voor de opname van een geluidsbestand. De SMRecorder-control moet dan niet gebruikt worden. Om de functionaliteit van de SMRecorder te vervangen, moet het opnemen van een geluidsbestand in Delphi gebeuren met de Mediaplayer-component. Deze component bevat standaard de nodige buttons om zowel de opname en de weergave van, als de navigatie doorheen een geluidsbestand te besturen. Het grote probleem dat opdook bij deze control was het juist initialiseren van de audio-devices. Dit kan wel automatisch gebeuren door de ‘DeviceType’ property van de Mediaplayercomponent de waarde ‘dtAutoSelect’ mee te geven, maar dit werkt enkel op voorwaarde dat er een bestaand bestand geopend wordt. Een mogelijke oplossing is dan om een wav-bestand aan te maken dat 0,0 seconden duurt. Vervolgens dient het bestand dan bij elke nieuwe opname gecopieerd te worden naar de naam en het pad van het nieuwe bestand. In een laatste stap moet dit nieuwe bestand dan geopend worden in de mediaplayer-component met de ‘file’ property van deze component. Vanaf dan kan de opname van het dictaat beginnen door op de record-knop van de mediaplayer component te klikken.

 

Omdat deze methode nogal omslachtig is en ze in ieder geval niet in andere ontwikkelingsomgevingen kan gebruikt worden omwille van de TmediaPlayer component die specifiek bij Delphi hoort, werd in de applicatie een andere manier van programmeren gebruikt. Dit gebeurde door gebruik te maken van de Multimedia API’s van Windows, zoals die standaard in Windows zitten. Deze interface, die specifiek op multimediatoepassingen gericht is, wordt Media Control Interface (MCI) genoemd en biedt standaard commmando’s om multimediadevices aan te spreken. Het grote voordeel van MCI is dat het in de meeste Windows-ontwikkelingsomgevingen kan gebruikt worden en dat de code dus zeer gemakkelijk kan overgezet worden naar andere software, zoals die van ACC.

 

Er werden vijf procedures gebruikt om het opnemen van een geluidsbestand te realiseren:OpenMedia, RecordMedia, StopMedia, SaveMedia, CloseMedia. Deze procedures zullen kort toegelicht worden.

 

5.1.4.1.1      OpenMedia

Deze procedure dient om de nodige audio-devices te openen. Daarbij is TMCI_Open_Parms de belangrijkste variabele. Deze is als volgt gedefinieerd in de SDK van Windows:

 

typedef struct {

    DWORD        dwCallback;  

    MCIDEVICEID  wDeviceID;

    LPCSTR       lpstrDeviceType;

    LPCSTR       lpstrElementName;

    LPCSTR       lpstrAlias;

} MCI_OPEN_PARMS;

 

De dwCallback moet een handler geven voor bepaalde events. De hoofdform kan hier als handler gebruikt worden. De waarde die WdeviceID zal krijgen, geeft aan de applicatie door welk device verder gebruikt moet worden voor de opname. De andere waarden in TMCI_Open_Parms zijn pointers naar bijkomende informatie over het te openen device. Om de strings om te zetten in pointers kan de functie PChar gebruikt worden. Eenmaal TMCI_Open_Parms zijn waarden heeft gekregen, kan het MCI-open commando gegeven worden om het te gebruiken deviceID te bepalen. Het MCI-open commando kan gegeven worden met het mciSendCommand:

 

MCIERROR mciSendCommand(

    MCIDEVICEID IDDevice,   

    UINT uMsg,   

    DWORD fdwCommand,  

    DWORD dwParam

   );

 

uMsg moet hier de waarde mci_Open krijgen om aan te geven dat het om het open-commando gaat. IDDevice is de waarde de we willen achterhalen en juist daarom voeren we het open-commando uit. IDDevice moet dus logischerwijs steeds gelijk aan nul zijn als uMsg gelijk aan mci_Open is. DwParam is een pointer naar het adres van de eerder besproken Openparameters.


Het recordtype van de parameters wordt bij Delphi standaard meegeleverd in de unit mmsystem.pas en heet TMCI_Open_Parms. De declaratie gebeurt dus:

 

OpenParameters: TMCI_Open_Parms;

 

Op implementatieniveau kan mciSendCommand gewoon aangeroepen.

 

Fout:=mciSendCommand(0, mci_Open,Flags,LongInt(@OpenParameterss)); //fout = longint

    if FoutMyerror <> 0

      then begin

          mciGetErrorString(Fout, S, SizeOf (S)); // S is een string

          showmessage('Error : ' + StrPas(S));

           end

    else FDeviceID:=OpenParameters.wDeviceID; //FdeviceID is een word

 

FdeviceID is nu een word dat het device bepaalt.

 

5.1.4.1.2      RecordMedia

Deze functie komt in grote lijnen overeen met de vorige functie, met dit verschil dat er een mci_record commando gegeven wordt aan device FdeviceID. Bij de parameters moeten er 2 getallen opgegeven worden die het begin en het einde van de opname bepalen.

 

mciSendCommand(FDeviceID, mci_Record, Flags,Longint(@MyRecordParms));

 

5.1.4.1.3      StopMedia

Ook hier weinig verschillen behalve dan dat uMsg van mciSendCommand gelijk aan mci_Stop moet zijn. Ook hier komt het recordtype voor in mmsystem.pas onder de naam TMCI_Generic_Parms.

 

5.1.4.1.4      SaveMedia

Het recordtype van de save parameters wordt niet geleverd door Delphi. Het is dus nodig om zelf het recordtype te gaan aanmaken. Als we naar de definitie in de SDK kijken,


 

typedef struct {

    DWORD  dwCallback;  // hier moet naar een handler verwezen worden

    LPCSTR lpfilename;  // bestandsnaam die gesaved moet worden

} MCI_SAVE_PARMS;

 

geeft dit in Delphi het volgende:

 

type

      Tmci_Save_Parmeters = record

      dwCallback: DWord; // hier moet naar een handler verwezen worden

      lpstrFileName: PAnsiChar;  // bestandsnaam

    end;

 

Nu kunnen we de SaveParameters declareren als een Tmci_Save_Parmeters. Het aanroepen van het mciSendCommand kan nu gebeuren, met uMsg gelijk aan mci_Save. Het lpstrFileName  veld van SaveParameters geeft het het pad en de bestandsnaam.

 

SaveParameters.lpstrFileName:=PChar('c:\dictaat.wav');

 

5.1.4.1.5      CloseMedia

Hier wordt het zelfde type parameters gebruikt als voor het MCI stopcommando. Als het MCI stopcommando lukt, kan FDeviceID terug op nul gezet worden.

 

De closeprocedure wordt best aangeroepen bij een exception. De procedure Application.onexception verwijst dan naar een procedure die op haar beurt CloseMedia aanroept.


Willen we nu de opname starten van een nieuw bestand, dan moeten enkel OpenMedia en RecordMedia aangeroepen worden. Om het opnemen te stoppen worden achtereenvolgens StopMedia, SaveMedia en CloseMedia aangeroepen.

 

5.1.4.2       SMAction

De SMAction component moet zorgen voor de naamgeving van het dictaat en van de job, de prioriteit van de verwerking, de te gebruiken context,… Hierbij traden niet veel problemen op. De meeste van deze gegevens kunnen namelijk uit de properties van de SMAuthentication component gehaald worden. Enkel bij de naamgeving van de jobs dient er door de programmeur voor gezorgd te worden dat er geen duplicaten optreden.

 

5.1.4.3       SMAuthentication

Met deze component waren er in eerste instantie geen problemen. Toen er echter meerdere users werden aangemaakt en er gebruik gemaakt werd van paswoorden, bleek het onmogelijk om een paswoord in te geven voor een gebruiker. Ook hier kan het gebruik van API’s misschien een oplossing bieden.

 

5.1.4.4       SMJoblist

De SMJoblist dient om een overzicht te geven van de herkende dictaten. Vanaf daar kan de correctie-editor in gang gezet worden. Het probleem was echter nog steeds dat de correctie-editor niet werkte (zie paragraaf 5.1.3). Er werd dan geprobeerd hem aan de gang te krijgen door de template vanin MS Word te laden en hem daar eventueel te debuggen. Maar de macro gaf steeds een error ‘file not found:SmCED.dll’, terwijl dit bestand ondertussen al in bijna elke mogelijke directory stond.  Vervolgens werd geprobeerd om de correctie-editor aan de praat te krijgen door hem uitdrukkelijk aan te roepen vanuit de SMJoblist in de Delphi-applicatie. Ook hier werd er echter geen resultaat geboekt.

 

Daarom moest er een andere manier gezocht worden om de herkende tekst in de Delphi-applicatie te krijgen. Geen enkele van de ActiveX componenten biedt echter een toegang tot de herkende tekst. Er bleven dan ook twee oplossingen over voor dit probleem.

 

Een eerste mogelijkheid was om het formaat van de herkende bestanden te achterhalen en dan vervolgens een procedure in het programma in te bouwen om deze omzetting naar tekst door te voeren. Helaas mochten de mensen van Philips het formaat van de herkende bestanden niet vrijgeven.

 

Een tweede mogelijkheid is het gebruik van de API’s van SpeechMagic. Spijtig genoeg zijn de datatypes die in die API ’s gebruikt worden niet beschikbaar voor Delphi, en een manuele invoer ervan is monnikenwerk. Uiteindelijk werd de vraag nog maar eens aan de mensen van Philips gesteld, maar ook zij konden ons niet verder helpen.

 

5.1.5       Besluit voor de Stand-alone installatie

Al bij al verliep de stand-alone installatie niet zo vlot. Na vele moeizame configuratie-aanpassingen, bleven er drie fundamentele problemen over. Ten eerste bleek een installatie op een NT-platform onmogelijk. Dit kan toch als een zware tekortkoming van SpeechMagic aanzien worden. Zoals we evenwel later zullen zien, biedt een gedistrubueerde installatie wel de mogelijkheid om in Windows NT te werken. Een tweede probleem was dat de correctie-editor niet functioneerde. Door toeval ontdekten we ook voor dit probleem een oplossing bij een gedistribueerde installatie. Een laatste euvel was het gebruik van de API’s van Windows. Hier kwam heel wat extra programmeerwerk bij kijken om de verschillende recordtypes te definiëren. Eenmaal deze recordtypes correct gedefinieerd zijn, functioneert het programma vlot. Het probleem is echter dat het bij een foute definitie in Delphi, het bijna onmogelijk is te achterhalen in welke definitie de fout juist zit.

 

5.2        Gedistribueerd systeem

5.2.1       Hardware

Om de client-server architectuur ten gronde te testen werd er eerst een netwerk opgezet, bestaande uit een onder andere een recognitionserver met een Pentium III 500Mhz en 256MB RAM, een file-server met een Pentium II 3530Mhz en 64MB RAM, en een client met een AMD K6 300 Mhz en 128MB RAM. Aangezien SpeechMagic zowel op Windows 95 en 98 als op Windows NT 4.0 en Windows 2000 kan draaien, werd voor de recognitionserver voor Windows 2000 Professional geopteerd. De fileserver draaide Windows 98 en op de client-zijde werd Windows 2000 Professional geïnstalleerd. Als netwerktopologie werd Microsoft Networks gebruikt over TCP/IP.

 

De client was ook uitgerust met een SpeechMike van Philips.

 

5.2.2       Installatie

De eerste fase van de installatie bestaat uit het opzetten van de fileserver. De enige manier om het systeem duidelijk te maken dat er een gedistribueerde installatie moet gedaan worden, is door de fileserver vanop een andere computer (een client) te installeren. Concreet moet op elke client een drive gemapt worden naar de installatiedirectory van SpeechMagic op de fileserver. De stationsaanduiding en het pad moeten op alle werkstationcomputers identiek zijn. Zo kreeg dus elke client een H-drive die verwijst naar ‘c:\Speechmagic’ van de fileserver.

 

Dan kan de installatie van de fileserver starten vanop een client. Het systeem vraagt dan waar Speechmagic dient geïnstalleerd te worden. Hier dient dus ‘h:\’ opgegeven te worden. Aangezien ‘h:\’ verwijst naar een netwerkdrive, weet het systeem vanaf nu dat er een gedistribueerde installatie dient uitgevoerd te worden. Als de installatie van de fileserver voltooid is, staat er op de fileserver een directory /WSSETUP. Elke client kan nu geïnstalleerd worden door ‘h:\WSSETUP\Setup.exe’ uit te voeren. Dit verliep probleemloos en ondanks het feit dat alle clients Windows 2000 machines waren, bleven de problemen met de msdaps.dll zoals die in de stand-alone installatie opdoken uit.

 

5.2.3       Configuratie

De configuratie gebeurt op een clientmachine en gebeurt op dezelfde manier als in de stand-alone versie. Een van de twee clients werd als  recognitionserver en dispatcher geconfigureerd. Aangezien de herkenning van spraak veel resources vereist, werd hiervoor de Pentim III 500Mhz met 256 RAM gekozen. De tweede client (K6 300Mhz met 128 RAM) werd dan als werkstation voor de spraakherkenning gebruikt. Tegen alle verwachtingen in bleek de correctie-editor hier wel te werken. Blijkbaar stond op die machine een versie van MS Word 95 geïnstalleerd. Aangezien de correctie-editor gewoon een Macro is die in MS Word moet uitgevoerd worden, kunnen de problemen met de correctie-editor zoals die vroeger opdoken waarschijnlijk aan de versie Word worden toegeschreven. Daarom werd er bij wijze van test geprobeerd om de correctie-editor op de recognitionserver, die MS Word 2000 draait, te laten werken. Zoals verwacht lukte dit niet.

 

5.2.4       Toepassingen

Het updaten van de fileserver werd ook uitgetest. Philips had een patch meegeleverd voor de huidige versie 3.1 van SpeechMagic. Deze patch kan net zoals de installatie vanop eender welke client gebeuren. Vanop die client zoekt het patch-programma de fileserver en voert dan de update uit. Eenmaal de update van de fileserver doorgevoerd is, wordt er van alle clients die aanloggen op de fileserver ook automatisch een update gedaan. Hiervoor wordt er telkens wanneer een client opstart een check uitgevoerd. Deze check wordt soms uitgevoerd alvorens de netwerkverbinding naar de fileserver tot stand is gekomen. De link naar het opstartprogramma op de fileserver werkt dan nog niet en het opstartprogramma dient dan later manueel uitgevoerd te worden. Dit is misschien eerder een probleem van MS Windows dan van SpeechMagic.

 

De door Philips meegeleverde toepassingen werken vrij goed. Af en toe crashte de client-applicaties echter, waarna een reboot vereist was. Maar aangezien alle dictaten rechtstreeks op de fileserver worden opgeslagen, kan het systeem zich steeds herstellen, zolang de fileserver draaiende blijft.

 

Ook de herkenningsserver liet het af en toe afweten en gaf dan volgende fout:

Fatal error: CmainFrame::OnTimer(1) non CsmException-type exception thrown

 

Wanneer zo een crash zich voordoet, laten alle clients die op dat moment herkenningsapplicaties draaien het ook afweten. Sporadisch deden zich nog andere kleine crashes voor, maar die kunnen ‘normaal’ geacht worden in een Windows-omgeving.

 

Als laatste test werd de eerder geschreven Delphi-applicatie uitgevoerd in de gedistribueerde omgeving. Deze applicatie leek op het eerste zicht goed te werken. Toen er echter een gebruiker werd geselecteerd die een paswoord had ingegeven, bleek het onmogelijk om het paswoordveld van de SMAuthentication-component in te vullen. De enige oplossing was in dit geval het paswoord van die gebruiker te veranderen en niets op te geven als nieuw paswoord. Voor de rest bleek de Delphi-applicatie probleemloos te lopen.

 

5.3        Herkenning

De herkenning zou volgens Philips zonder enige initiële training reeds een bruikbaar resultaat moeten geven. Het al dan niet gedistribueerd zijn van het systeem heeft uiteraard geen invloed op de herkenning. Uit de volgende voorbeeldjes blijkt dat de initiële training wél een grote invloed op juistheid van de herkenning heeft. Volgende dictaten werden met en zonder initiële training aan SpeechMagic aangeboden:

 

Algemeen:           Beste leden KOMMA NIEUWE REGEL
Zoals jullie reeds weten KOMMA heeft onze volgende activiteit aanstaande dinsdag plaats KOMMA als het weer wat meezit PUNT Indien het zou gaan regenen  KOMMA gaan we gewoon naar de film PUNT We spreken in ieder geval af om TWEE uur aan de kerk PUNT Vergeet jullie fototoestel niet UITROEPTEKEN NIEUWE REGEL
Vriendelijke Groeten

 

Dit gaf volgende resultaten, respectievelijk zonder en met initiële training (fouten zijn onderlijnd). In beide gevallen werd exact het zelfde wav-bestand gebruikt, enkel het profiel van de gebruiker werd veranderd. De eerste gebruiker had helemaal geen trainingsessie gedaan, de tweede gebruiker had de volledig training (ongeveer 1,5 uur) achter de rug.

 

Zonder training: Het beste weten,
zoals u reeds weten, heeft om de volgende activiteiten aanstaande dinsdag plaats, als het weer wat muziek. Indien het zou eindigen, van voormelde feiten. Ik spreek in ieder geval af om twee uur aan de Kerk. Begin juli voor de door zijn niet!
Vriendelijke groeten

 

Met training:        De Beste leden,
zoals u reeds weten, heeft onze volgende activiteiten aanstaande dinsdag plaats, als het meer had BV. Indien het zou gaan regelen, gaan voeren naar de film. Te spreken in ieder geval was om twee uur aan de Kerk. Het geschil fototoestel niet!
Vriendelijke groeten

De training heeft duidelijk een invloed op de herkenning. Waar er zonder training vooral volledig foute zinsdelen opduiken, beperken de fouten zich na de training tot zinsdelen of woorden. Of de tekst er duidelijker op wordt, is een andere zaak.

 

In een tweede test werd een dictaat ingevoerd dat gebruik maakt van zogenaamde vakterminilogie. Zoals in paragraaf 3.1 reeds vermeld gebruikt SpeechMagic contexten voor de herkenning van dictaten uit een bepaald vakgebied. De contextgebonden herkenningen bleken veel accurater. Volgend voorbeeldje kan dit illustreren. De tekst die werd ingesproken is hieronder vermeld.

 

Contextgebonden: PUNT VIER Het doel der vennootschap zal in de statuten nader worden omschreven als volgt DUBBELE PUNT NIEUWE REGEL
PUNT A de vennootschap stelt zich ten doel de uitoefening van een bloemkwekerij KOMMA NIEUWE REGEL

PUNT B de vennootschap is tevens bevoegd tot het oprichten en het verwerven van KOMMA het deelnemen in KOMMA het samenwerken met of het op enigerlei andere wijze betrokken zijn bij KOMMA het voeren van directie over KOMMA alsmede tot het ROND HAAKJE OPENEN doen ROND HAAKJE SLUITEN financieren KOMMA ook door middel van het stellen van zekerheden KOMMA van andere ondernemingen KOMMA met name van die waarmee de vennootschap in een groep is verbonden KOMMA NIEUWE REGEL

 

Dit gaf volgende resultaten, repectievelijk zonder initiële training en met initële training  (fouten zijn onderlijnd). Ook hier werd 2 keer het zelfde wav-bestand gebruikt.

 

Zonder training:       . Hier bedoelde vennootschap zal   de statuten nader worden omschreven als volgt:
a. de vennootschap stelt zich ten doel de uitoefening van een bloemkwekerij,
b. de vennootschap is tevens bevoegd tot   oprichting en het verwerven van, een deelneming in, het samenwerken met of het op enigerlei andere wijze betrokken zijn bij, het doel van directie over, alsmede tot het Hof (doen) financieren, ook door middel van het stellen van zekerheden, van andere ondernemingen, met name van die waarmee de vennootschap in goed is verbonden,

 

Met training:           De heer 4. bedoelde vennootschap zal in de statuten nader worden omschreven als volgt:
h. de vennootschap stelt zich ten doel de uitoefening van een bloemkwekerij,
b. de vennootschap is tevens bevoegd tot   oprichten en het verwerven van, het deelnemen in, het samenwerken met of het op enigerlei andere wijze betrokken zijn bij, het voeren van directie over, alsmede tot het (doen) financieren, ook door middel van het stellen van zekerheden, van andere ondernemingen, met name van die waarmee de vennootschap in goed is verbonden,

 

De herkenning is ook hier merkelijk beter na een initiële training. De tekst die verkregen werd binnen een specifieke context en na initële training is bijna perfect. Opmerkelijk is dat er in alle gevallen fouten aan het begin van het dictaat optreden. Dit werd ook vastgesteld in andere testdictaten.

 

5.4        Besluit

De stand-alone versie werd niet aan de praat gekregen op de NT-platformen, maar in Winodws 98 doken er behalve de problemen met de correctie-editor weinig problemen op. Eenmaal de installatie voltooid is, is het programmeren van een eigen applicatie met de ActiveX-componenten van SpeechMagic in Delphi vrij eenvoudig. Het gebruik van de Speechmike is zeker aan te raden om enerzijds het initialiseren van de geluidsbestanden en de audio-devices te vereenvoudigen, en anderzijds  vergemakkelijkt de SpeechMike de navigatie doorheen een geluidsbestand.

 

De gedistribueerde versie leek het probleem van de installatie onder NT op te lossen. De applicaties crashten echter duidelijk meer dan in de stand-alone versie. Sommige fouten kunnen misschien wel toegeschreven worden aan het netwerk, dat soms onbetrouwbaar werkt omwille van de vrij lange kabels die gebruikt werden. Voorts bleek het wel nuttig dat alle informatie steeds op een fileserver opgeslagen wordt. Door de fileserver te scheiden van de eigenlijk spraakherkenningsapplicaties, gaan er door het crashen van de applicaties geen spraakgegegevens verloren.

 

Tot slot kan als nadeel vermeld worden dat er via de API of ActiveX-componenten geen onmiddelijke toegang tot de herkende tekst is. De enige mogelijkheid om een herkende tekst op te vragen is langs de correctie-editor die in MS Word loopt.

 

Als laatste opmerking kan hier vermeld worden dat de kwaliteit van de herkenning enkel in zeer specifieke contexten, en na een initiële training, hoog genoeg is om echt bruikbaar te zijn.


Hoofdstuk 6     Programmeren van spraakherkenning in ‘Medisch Dossier’

 

Na de eerste kennismaking met SpeechMagic die in het vorige hoofdstuk werd beschreven, konden we beginnen met het pakket in te passen in de ACC omgeving. In dit hoofdstuk zullen we een bondig verslag geven van het verloop van deze inpassing. Problemen die reeds in het vorige hoofdstuk beschreven werden zullen hier uiteraard niet meer vermeld worden.

 

6.1        Oracle Forms

‘Medisch Dossier’ is volledig gebaseerd op een Oracle database. De implementatie van ‘Medisch Dossier’ is dan ook volledig gebeurd in Oracle Forms, een Rapid Application Development (RAD) Tool van Oracle die specifiek gericht is op het schrijven van applicaties voor verschillende GUI-omgevingen. Zo ondersteunt Forms zowel Windows als Unix omgevingen.

De drie belangrijkste componenten in Forms zijn de Designer, de Generator en de Runtime. De Designer wordt gebruikt om de applicatie te ontwikkelen en is verantwoordelijk voor het integreren van de verschillende modules tot een eindapplicatie. De Generator is verantwoordelijk voor het omzetten van de 4GL-code zoals die in de Designer wordt ontwikkeld naar een executable. De Runtime wordt door de programmeur gebruikt om weer te geven hoe de ontwikkelde applicatie er uiteindelijk zal uitzien voor de eindgebruiker. PL/SQL is de procedurale programmertaal die gebruikt wordt om de applicatielogica in te geven en om de interactie met de database te verzorgen. Deze PL/SQL-code wordt in gang gezet door middel van triggers. Deze triggers kunnen vergeleken worden met de events zoals die in Delphi bestaan.

 

6.2        Voorafgaande problemen

Oracle Forms is dus net als Delphi een objectgeöriënteerde ontwikkelingsomgeving. Gezien de grote overeenkomsten tussen beide ontwikkelingsomgevingen, kon de structuur van het Delphi-programma grotendeels worden overgenomen voor de programmering in Oracle Forms. De installatieproblemen van SpeechMagic doken ook hier op, maar na lang proberen lukte het toch de componenten te registreren zodat we konden beginnen met het programmeren. Een bijkomend probleem dook op toen bleek dat de geluidskaart niet juist geconfigureerd was. Zoals in vele bedrijfsomgevingen waren de PC’s wel voorzien van een geluidskaart, maar werd deze zelden of nooit gebruikt. Het gevolg was dat de drivers voor deze kaart ook niet geïnstalleerd waren. Na het installeren van deze drivers werkte de kaart echter nog niet. Na veel heropstarten en wijzigen van de IRQ’s en drivers werd uiteindelijk besloten om de computer te voorzien van een nieuwe geluidskaart. Hieruit blijkt duidelijk dat het ook voor de eindgebruiker belangrijk is rekening te houden met de veelal gebrekkige installatie van geluidskaarten en de hiermee samenhangende problemen.

 

6.3        Forms en ActiveX

Forms ondersteunt ook ActiveX, maar spreekt de componenten op een iets andere manier aan. De componenten worden namelijk niet echt geïmporteerd in de ontwikkelingsomgeving; er is enkel een interface voorhanden die het mogelijk maakt de componenten aan te spreken. Dit heeft als gevolg dat er voor elke trigger een pointer moet verkregen worden die naar de ActiveX component verwijst. Deze pointer werkt locaal en moet dus voor elke trigger opnieuw gedeclareerd worden. De when-new-form-instance trigger zag er dan bijvoorbeeld als volgt uit:

 

declare

joblist_obj ole2.obj_type;
authentication_obj ole2.obj_type;
action_obj ole2.obj_type;
recorder_obj ole2.obj_type;

begin

joblist_obj:=
      form_ole.get_interface_pointer(‘SPEECHBLOCK.OLE_JOBLIST);
ole2.invoke(joblist_obj,’Initialize’);

authentication_obj:=
      form_ole.get_interface_pointer(‘SPEECHBLOCK.OLE_AUTHENTICATION);
ole2.invoke(authentication _obj,’Initialize’);

action_obj:=form_ole.get_interface_pointer(‘SPEECHBLOCK.OLE_ACTION);
ole2.invoke(action_obj,’Initialize’);

recorder_obj:=
      form_ole.get_interface_pointer(‘SPEECHBLOCK.OLE_RECORDER);
ole2.invoke(recorder _obj,’Initialize’);

 

joblist_obj:=
      form_ole.get_interface_pointer(‘SPEECHBLOCK.OLE_JOBLIST);
ole2.invoke(joblist_obj,’Activate’);

authentication_obj:=
      form_ole.get_interface_pointer(‘SPEECHBLOCK.OLE_AUTHENTICATION);
ole2.invoke(authentication _obj, ’Activate’);

action_obj:=
      form_ole.get_interface_pointer(‘SPEECHBLOCK.OLE_ACTION);
ole2.invoke(action_obj, ’Activate’);

recorder_obj:=
      form_ole.get_interface_pointer(‘SPEECHBLOCK.OLE_RECORDER);
ole2.invoke(recorder _obj, ’Activate’);

end;

 

Vervolgens kon er net zoals in Delphi worden voortgegaan met het toevoegen van de verschillende triggers. Maar al snel dook er een probleem op met de componenten. Er was duidelijk te zien dat de componenten zonder foutmeldingen geactiveerd waren. De functionaliteit liet het echter volledig afweten. Zo kon een dictaat wel worden opgenomen, maar het daarna doorsturen naar de herkenningsserver lukte niet.

 

Na wat debugwerk kwamen we er achter dat het probleem lag bij de commmunicatie tussen de verschillende componenten. De oorzaak hiervan bleek te zijn dat ActiveX-componenten binnen een Oracle Forms omgeving geen « awareness » bezitten voor de verschillende activiteiten die kunnen optreden. Dit betekent concreet dat de componenten wel zelfstandig kunnen werken, maar Forms kan een event van deze componenten niet zelfstandig detecteren. Een tweede beperking die Forms oplegt aan het gebruik van ActiveX componenten is dat niet alle properties van de ActiveX componenten at design time een waarde kunnen toegewezen krijgen. Een oplossing voor het tweede probleem kan gemakkelijk verkregen worden door in een when-new-form-instance trigger de ActiveX componenten de juiste waarden toe te kennen.

 

Een oplossing voor het eerste probleem is minder evident. Na heel wat opzoekingswerk bleven twee mogelijkheden over: de eerste maakt gebruik van een timer[23] en gebruikt de When-Timer-Expired trigger om veranderingen te ‘pollen’. Een andere mogelijkheid is om de Forms omgeving te verlaten en de spraakherkenning in Visual Basic te programmeren. Hier volgt een korte analyse van beide methoden.

 

6.3.1       Polling methode

De polling methode gaat er impliciet van uit dat elk event van een ActiveX component, een verandering van de properties van die component tot gevolg heeft. In praktijk bleek dit niet steeds zo te zijn. De bedoeling is dan om met behulp van een Timer-component, periodiek de properties van de ActiveX componenten na te kijken op veranderingen. Om deze methode te testen, hebben we in Forms een internetbrowser geschreven, gebruik makend van een ActiveX component en van de polling methode. De ActiveX component die gebruikt werd, neemt al de browserfunctionaliteit voor zijn rekening.
Het programma begint met de declaratie en de creatie van de timer:

 

When-new-form-instance

 

declare

timer_id Timer;

one_second NUMBER(5) := 500;

BEGIN    

      timer_id := CREATE_TIMER('emp_timer', one_second, REPEAT);

END;

 

De waarde die aan de variabele one_second wordt toegewezen bepaalt het interval waarbinnen er opnieuw zal gepold moeten worden. Voor een browser is 500 milliseconden ongeveer goed. Voor spraakherkenning zal dit interval waarschijnlijk veel kleiner moeten genomen worden.

 

Vervolgens wordt de code toegevoegd die moet pollen naar de status van de browser. De browser kan ofwel bezig zijn, ofwel niet. Dit reflecteert zich door de kleur van een logootje dat werd toegevoegd; rood of groen. Men kan nu omwille van het ontbreken van awareness van de componenten niet eenvoudigweg de kleur van het logo laten veranderen bij een event. De programmeur is nu volledig verantwoordelijk voor het pollen van de status van de browser, om daaruit dan de geschikte kleur voor het logootje te bepalen. Ook de synchronisatie tussen de browsercomponent en de url-balk waar het internetadres wordt ingetypt, moet door de programmeur verzorgd worden. Dit geeft volgende code voor de when-timer-expired trigger:

 

declare

browser_obj ole2.obj_type;

browser_obj2 ole2.obj_type;

hulpveld number;

BEGIN

browser_obj := forms_ole.get_interface_pointer ('Browser.BROWSER');

hulpveld:=internetexplorer_iwebbr_3.busy(browser_obj);

 

if hulpveld = -1 then        /* in busy status  */

 read_image_file('p:\lib\acc1.gif','GIF','browser.busy');/*rood logo*/

 browser_obj := forms_ole.get_interface_pointer ('Browser.BROWSER');

else

 read_image_file('p:\lib\acc.gif','GIF','browser.busy');/*groen logo*/

 browser_obj := forms_ole.get_interface_pointer ('Browser.BROWSER');

 

if :SYSTEM.CURSOR_ITEM = 'BROWSER.URL' then

 null;  /* indien ik in de url-balk  sta doe dan geen refresh*/

else

 :browser.url:=internetexplorer_iwebbr_3.locationurl(browser_obj);

 synchronize;     /* laadt de url in het browser-venster en

                        synchroniseer alle objecten */

end if;

end if;

end;

 

Tenslotte werd aan de verschillende buttons nog de nodige functionaliteit meegegeven.

De resultaten waren zeer ontgoochelend. Zelfs met een poll-interval van een halve seconde bleek het programma op een Pentium II 350 Mhz met 128 MB RAM veel te traag te werken. De cursor bleef ook constant flikkeren tussen de ‘busy’ status en de gewone status. Een iets wat hoger poll-interval kon hier wel beterschap in brengen, maar maakte de reactie van het programma op de invoer van de gebruiker veel te traag. Het is duidelijk dat er voor spraakherkenning een nog veel kleiner poll-interval nodig is, hetgeen veel te belastend zou zijn voor het systeem.

 

6.3.2       Visual Basic

De tweede mogelijke oplossing was om deze applicatie in Visual Basic te schrijven. Visual Basic biedt namelijk uitstekende ondersteuning voor ActiveX-componenten. Concreet werd er in Visual Basic een nieuwe ActiveX-component aangemaakt die alle nodige logica voor de spraakherkenning in ‘Medisch Dossier’ bevatte. Deze nieuwe component bestaat dan uit de 4 AcitveX componenten van SpeechMagic zodanig dat hij alle functionaliteit kan leveren van de 4 spraakherkenningscomponenten. Hierbij dient er op gelet te worden dat al de communicatie die tussen de vier componenten onderling plaats heeft, in Visual Basic geprogrammeerd moet worden. Het is dus belangrijk op voorhand te weten welke onderlinge communicatie er tussen de 4 componenten vereist is. Eenmaal de component in Visual Basic geprogrammeerd is, kan hij in Oracle Forms gebruikt worden als gewone ActiveX component.

 

6.3.2.1       Stappen in Visual Basic

In Visual Basic bestaat er een AcitveX Control Interface Wizard die het bouwen van ActiveX-componenten vergemakkelijkt. Volgende stappen dienen doorlopen te worden :

 

  1. Het selecteren van de componenten (ActiveX of andere) waaruit nieuwe component zal bestaan. Hier werden dus de Authentiction-, de Action, de Joblist- en Recordercomponent van SpeechMagic geselecteerd.
  2. In een tweede stap moet er aangegeven worden welke properties, methods en events van de in stap 1 geselecteerde componenten in de nieuwe component moeten verschijnen.
  3. In deze stap kunnen nieuwe, zelf te programmeren properties, methods en events ingegeven worden. Deze optie werd voorlopig niet gebruikt.
  4. De mapping bepaalt bij welke methods en events van de oorspronkelijke component(en) de in stap 2 aangegeven methods en events horen. Hier komt dus helemaal geen programmeerwerk aan te pas. Zo werd er in stap 2 bijvoorbeeld ingesteld dat de method ‘Record’ van de Recordercomponent ook in de nieuwe component moest blijven bestaan. In stap 4 wordt de method ‘Recorder’ van de nieuwe component gewoon gemapt naar de method ‘Recorder’ van de bestaand Recordercomponent. Wil men dan later de recorder starten, moet men gewoon de Recorder method van de nieuwe component aanroepen.
  5. In de laatste stap doet men het zelfde als in stap 4, maar voor de properties. De componentenbouwer krijgt de mogelijkheid om eventueel andere datatypes te bepalen voor de nieuwe properties.

 

Eenmaal deze AcitveX Control Interface Wizard doorlopen is, moet de code voor de nieuwe component geschreven worden.

 

Een probleem stelde zich ten gevolge van methods die de 4 componenten gemeenschappelijk hadden. Zo hebben alle vier de componenten bijvoorbeeld een method ‘Initialize’ (zie paragraaf 5.1.4). Om deze 4 methods ook in de nieuwe component beschikbaar te hebben heeft men 2 mogelijkheden :

 

  1. Ofwel worden er in de nieuwe component 4 nieuwe methods aangemaakt, die dan gemaakt worden naar de method ‘Initialize’ van de respectievelijke componten. Dit geeft volgend beeld :

 

mapped

 
 


mapped

 
Newcomponent.AuthenticationInitialize

Authentication.Initialize

mapped

 
Newcomponent.ActionInitialize

Action.Initialize

mapped

 
Newcomponent.RecorderInitialize

Recorder.Initialize

Newcomponent.JoblistInitialize

Joblist.Initialize

 

 

  1. Ofwel heeft de nieuwe component één method ‘Initialize’, en wordt er in de code voor de method voor gezorgd dat alle de 4 Initialize-methods van de 4 componenten worden uitgevoerd. Het nadeel bij deze tweede methode is dat de verschillende ‘oude’ methodes niet afzonderlijk kunnen aangesproken worden.

 

Aangezien de 4 componenten echter steeds geïnitialiseerd moeten worden, werd er voor geopteerd de tweede methode te gebruiken. Na het uitgebreid testen van de component (zie bijlage1), werd de ocx-file gesaved en vervolgens geregistreerd in Windows met

 

Regsrv32.exe Newcomponent.ocx

     

In Oracle Forms werd dan een nieuwe module aangemaakt die enkel bestaat uit één form die kan geopend en gesloten worden. Verder werd er niets in Forms geprogrammeerd. Op die form wordt de nieuwe ActiveX component dan geïmporteerd. Het is belangrijk dat de nieuwe ActiveX component eerst geregistreerd wordt in Windows met regsvr32.exe. Op deze manier werd het programma vrij eenvoudig verkregen en het uiteindelijke programma draaide zeer goed. 

 

6.4        Besluit

 

 


Algemeen Besluit

Hier formuleert u het algemeen besluit van uw thesis.

 

 

 


Bijlagen

 

Bijlage 1 : To Do list om een UserControl te testen

 

Below is a To Do list of items required to complete the testing, debugging, and bullet-proofing of your UserControl.

 

A) Create a test program for your UserControl

 

There are two ways to set up a test program for your UserControl, depending on whether you inserted the control in a Standard EXE, or created an ActiveX Control project for it.

 

If you created an ActiveX Control project, the following steps will set up a test program:

 

1)  Save your UserControl.

2)  Close your UserControl's designer, to put the control in run mode.

3)  If you haven't already created a test project, add a Standard EXE project by selecting Add Project from the File menu.

4)  In the Toolbox, double-click your UserControl's icon to place an instance of your UserControl on Form1, in the Standard EXE project.  You can move and resize the control as needed.

5)  Save the project group. In later development and test sessions, you can open both projects at once by opening the project group.

 

If you inserted the UserControl in an existing Standard EXE project, follow these steps:

 

1)  Save your UserControl.

2)  Close your UserControl's designer, to put the control in run mode.

3)  In the Project window, double-click Form1 in the Standard EXE project, to open its designer.

4)  In the Toolbox, double-click your UserControl's icon to place an instance of your UserControl on Form1.  You can move and resize the control as needed.

 

B) Test your control's behavior at design time, and at run time.

 

1)  Select the control you placed on Form1 in the test project, and press F4 to open the Properties window. Verify that you can see and change the properties you added to your control.

2)  Close Form1 and reopen it, and verify that the property values for your control were correctly saved and retrieved.

3)  Double-click the control you placed on Form1, and verify that the appropriate events appear in the right-hand (Procedure) drop down of the code window.

4)  Add test code to the event procedures for your control.

5)  Add other controls, and put code in their event procedures to test the run-time behavior of your control's properties and methods.

6)  Press F5 to run the test project, and test your control's run-time behavior.

 

C) Making a Bullet-Proof, Full-Featured Control (Adding code details the Wizard doesn't provide)

 

1)  If you have constituent controls on your form, some events and properties may need to be mapped to multiple constituent controls.  For example, a BackColor property probably should map to the BackColor properties of the UserControl AND any label controls.  The MouseMove event needs to map to the MouseMove events of ALL constituent controls.

2)  Add coordinate translation to all events (such as MouseMove) that specify X and Y coordinates.

3)  For all properties that have enumerations (for example, MousePointer and BorderStyle), change the data type of the property to the appropriate enumeration name (in this case, MousePointerConstants and BorderStyleConstants) so that enumeration elements will show up in the Properties window.

4)  Add any custom enumerations you need for your own properties, plus code to validate them.

5)  Add error trapping to the ReadProperties event, to protect against invalid values or bad data types that might be manually edited into an .frm file.  For each property, add code to switch to the default setting when such an error occurs.  (See "Saving the Properties of Your Control" and "Creating Design-Time-Only, Run-Time-Only, or Read-Only Run-Time Properties" in Books Online.)

6)  If you have constituent controls, add code to UserControl_Resize to resize them when the control is resized.

7)  Set the Procedure ID for the Enabled property, so your control will behave the same as other ActiveX controls when enabled and disabled.

8)  The wizard maps properties of your control to constituent control (or UserControl) properties of like name.  In some cases, you may want to map a property to a property with a different name (for example, ShapeLabel maps its BackColor to the constituent Shape control's FillColor); this remapping must be done manually.

9)  Any properties that might affect the size of your control (such as font size, in a control that has an AutoSize property) should call your resize code from the Property Let.

10) For user-drawn controls, add code to the UserControl's Paint event to paint your control's appearance.  (See "User-Drawn Controls" and "How to Handle Focus in Your Control" in Books Online.)

11)  If one or more properties of your control will be data-bound, see "Binding a Control to a Data Source," in Books Online.

12)  Add additional features to your control.  You may find it useful to peruse the topics in "Visual Basic ActiveX Control Features," in Books Online.

 

 

 


Lijst van Figuren

Figuur 1 Voorspelling van het gebruik van spraaktechnologie door de 1000 belangrijkste bedrijven in de U.S.A. (Comerford, Makhoul & Schwartz)........................................................................... 20

Figuur 2 De componenten van een spraakherkenningssysteem. (Zue & Cole)..................... 23

Figuur 3 Eerste 2 metingen aan 8KHz in 8bit...................................................................... 24

Figuur 4 Windowing (Werkstuk Spraakherkenning, Rens Kortmann, 1996)....................... 26

Figuur 5 Fouriergetransformeerde en oorspronkelijke signaal van het Finse woord ‘kaksi’ (Phonetics and Theory of Speech Production)............................................................................................................... 29

Figuur 6 Discreet HMM (HMM Methods in Speech Recognition)...................................... 33

Figuur 7 Language Model (Helpbestand van Philips Speechmagic)..................................... 38

Figuur 8 Plaats van 'Medisch Dossier' binnen het aanbod van ACC (http://www.accnet.be) 53

Figuur 9 Workflow van een document (ACC).................................................................... 56

 


Lijst van tabellen

Tabel I : Verdeling naar activiteiten van instellingen (http://www.accnet.be)......................... 50

 


Bronnen

Boeken

Hall M., Knapp J. & Winston Ch. (1961). Distribution in Great Britain and North America. A study in Structure and Productivity. University Press London. pp 232.

 

Geraadpleegde tijdschriften

 

Boyd H.W. & Piercy I. (1963). Marketing to the British Consumer. Business Horizons, 6(1), pp 77-86.

 

Artikel in boek

Taylor B. Financing Tables and the Future. In: Taylor B. (1970). Investment Analysis and Portfolio Management. St. Martin's Press. pp 378-386.

 

Interne nota's en wetteksten

 



[1] Kritieke Succes Factoren en de Balanced Scorecard – een kwestie van complementariteit, Ir. P.M.G van Veen-Dirks RC en Dr. M.F.C.M. Wijn

[2] In de communicatietheorie wordt de entropie van een boodschap gegeven door de volgende vergelijking:

E(M) = -Σp(mi)log p(mi)                     i = 1..n

Zie Prof. Dr. J. Vanthienen, Knowledge Based Systems, Expert Systems, p. 149

[3] K. B. C. Saxena, R. W. Wagenaar, Critical Success Factors of EDI Technology Transfer: A conceptual Framework, p.5

[4] Universal Serial Bus

[5] Zue V. & Cole R. (1995) http://cslu.cse.ogi.edu/HLTsurvey/ch1node4.html#parameters

[6] De stelling van Nyquist zegt

[7] Dynamiek = 20 * log (u/u0) dB = 20 * log (2^16) = 20 * log 65536 = 96,33 dB

Hierbij stelt 0dB de maximale luidsterkte en -96dB de digitale stilte voor. Zie ‘Die standart 16 Bit gleich 96dB’,  http://www.joogn.de/privat/dipl/dipl-19.html

 

[8] http://tcw2.ppsw.rug.nl/~rens/spraak/signaal.html

[9] Spraak- en taaltechnologie: een overzicht, Stefaan Dennekin, 1999, p.8

[10] Basic Concept of Speech Recognition, R. Honis, G. Loehnert, 1999, p.16

[11]A Little Background: Why study Linear Algebra?, http://ciips.ee.uwa.edu.au/~mike/linalg/Linalg/node4.html

[12] http://www.lerc.nasa.gov/WWW/MMAP/PIMS/HTMLS/analysis.html

[13] Signal Representation, http://cslu.cse.ogi.edu/HLTsurvey/ch1node5.html#SECTION13

[14] Elektronica, automatisering en informatietechnologie, Guido François, hoofdstuk 14, p.11, 1998

[15] http://www.acoustics.hut.fi/~slemmett/dippa/chap3.html

[16] http://cslu.cse.ogi.edu/HLTsurvey/ch1node7.html#SECTION15

[17] Spraak- en taaltechnologie: een overzicht, Stefaan Dennekin, 1999, p.12

[18] Code Excited Linear Prediction: Het gesproken signaal wordt vergeleken met een analytisch model van de stem en de foutenmarges worden vervolgens opgeslagen.

[19] Pulse Code Modulation: standaard formaat voor audio. De term betekent dat ieder signaal (elke amplitude) als een puls wordt gezien die dan binair gecodeerd wordt, onafhankelijk van de voorgaande pulsen. Tegenwoordig gebeurt deze codering in 16bit.

[20] Software Development Kit

[21] Bij de transcriptie van verslagen wordt de tekst, die op band werd ingesproken, ingetypt in een tekstverwerker. Deze taak wordt meestal uitgevoerd door administratief personeel.

[22] Data Access Objects: biedt een framework  aan om code te genereren die databases manipuleert

[23] Bijna alle O.O.-ontwikkelingsomgevingen leveren een timercomponent die op bepaalde tijdstippen een event afvuurt.