Analyse en verwerking van gegevens in de intonatiemeter
Citation for published version (APA):
Hautus, E. H. (1992). Analyse en verwerking van gegevens in de intonatiemeter. (IPO-Rapport; Vol. 848). Instituut voor Perceptie Onderzoek (IPO).
Document status and date: Gepubliceerd: 03/04/1992
Document Version:
Uitgevers PDF, ook bekend als Version of Record
Please check the document version of this publication:
• A submitted manuscript is the version of the article upon submission and before peer-review. There can be important differences between the submitted version and the official published version of record. People interested in the research are advised to contact the author for the final version of the publication, or visit the DOI to the publisher's website.
• The final author version and the galley proof are versions of the publication after peer review.
• The final published version features the final layout of the paper including the volume, issue and page numbers.
Link to publication
General rights
Copyright and moral rights for the publications made accessible in the public portal are retained by the authors and/or other copyright owners and it is a condition of accessing publications that users recognise and abide by the legal requirements associated with these rights. • Users may download and print one copy of any publication from the public portal for the purpose of private study or research. • You may not further distribute the material or use it for any profit-making activity or commercial gain
• You may freely distribute the URL identifying the publication in the public portal.
If the publication is distributed under the terms of Article 25fa of the Dutch Copyright Act, indicated by the “Taverne” license above, please follow below link for the End User Agreement:
www.tue.nl/taverne
Take down policy
If you believe that this document breaches copyright please contact us at:
openaccess@tue.nl
providing details and we will investigate your claim.
Postbus 513, 5600 MB Eindhoven
Rapport no. 848
Analyse en verwerkin~
van gegevens in de
Intonatiemeter
E.H. Hautus
Analyse en vef\Verking
van gegevens
in
.efiletef
tf:lt:J
/J1t0:r-'
tfe
door
Edwin Hautus
in
de
lntonatiemeter
Voorwoord
Dit verslag vormt de afsluiting van een stage die ik vanuit de faculteit Wiskunde &
Informatica van de Technische Universiteit Eindhoven heb gelopen bij het Instituut voor
Perceptie Onderzoek te Eindhoven.
Mijn stagebegeleider G. Spaai
wil ik
graag bedanken voor de ondersteuning en begeleiding.
Daamaast
wil ik
F.
Maasbedanken voor de tijd die
hij
besteed heeft aan het toelichten van
de door hem geschreven programmatuur. Tot slot dank
ik
E .Gigi voor zijn geduld bij het
beantwoorden van mijn vragen over het Borland C++ pakket.
1
Inleiding
12
Beschrijving van
de
stage
3
2.1
Omgevingsanalyse
3
2.2
Deopdracht
5
2.3
Aanpassingen
5
3
Gebndkershandleiding
113.1
Het installeren
11
3.2
Het opstarten
11
3.3
Het hoofdmenu
11
3.4
Geheugengrenzen
14
3.5
Berekening van het gemiddelde en de
spreiding van de toonhoogte
15
3.6
Voorbeelden
16
4
Software documentatie
25
4.1
Algemeen overzicht van de filestructuur
25
4.2
Overzicht van datafile-fonnaten
26
4.3
Kort overzicht van de programma's
28
4.4
Pupils
29
4.5
Sort
30
4.6
Stmod
31
4.7
Pitch
31
4.8
Statl
32
4.9
Stat2
32
4.10
Tabel
32
4.11
Conlim
33
4.12
Conlim2
33
4.13
Load
33
s
Verheteringen voor
de
toekoimt
35
Bijlage
Code van
de
programmatuur
Hoofdstukl
Inleiding
Prelinguaal-dove sprekers ondervinden vaak problemen met bet reguleren van de
spraaktoonhoogte. De gemiddelde spraaktoonhoogte
is
veelvuldig te hoog of te laag.
Bovendien kenmerkt de spraak van prelinguaal-clove sprekers zich frequent door
af-wezigheid van toonhoogtevariaties tijdens het spreken, hetgeen resulteert in
toonhoogte-contouren die als vlak of melodieloos worden ervaren en die een monotone stem
weerspiegelen. Deze onnatuurlijke intonatie
kan
bijdragen tot een verslechtering van de
verst.aanbaarheid van de spraak van prelinguaal-clove sprekers. Bovendien wordt de
stemkwaliteit vaak negatief beinvloed. Een van de problemen in het intonatieonderwijs aan
dove sprekers is de dove leerling inzichtelijke infonnatie
teverschaff en over de wijze
waarop men kan komen tot een natuurlijker toonh00gteverloop. VISUele afbeelding van de
toonhoogte
is
daartoe een van de mogelijkheden. Deze visuele infonnatie kan
dan
gebruikt
worden om het spreekproces te corrigeren.
In
bet verleden is gepoogd dove sprekers te leren intoneren door visuele afbeelding van de
ruw gemeten toonhoogtecontour. Dit stuitte echter op verschillende problemen.
Inde
eerste plaats verstoren de stemloze delen van het signaal het beeld van de continu
gepercipieerde toonhoogtecontour. In de tweede plaats warden er in natuurlijke spraak
ve)e onwillekeurige toonhoogtebewegingen gemaakt die voor de perceptie van intonatie
irrelevant zijn, de zogenaamde micro-intonatie. Micro-intonatie treedt met name op bij
overgangen tussen consonanten en vocalen. Door beide factoren is de ruw gemeten
toonhoogtecontour niet erg geschikt te dienen als visuele terugmelding van de
gerealiseerde toonhoogtecontour.
Orn
deze problemen op
telossen heeft het Instituut voor Perceptie Onderzoek
teEindhoven in nauwe samenwerking met het Instituut voor Doven te Sint-Michielsgestel een
systeem ontwikkeld dat visue)e terugmelding verstrekt over
de
gerealiseerde
toonhoogte-contour op het beeldschenn van een computer. Oat gebeurt in de vorm van een uit
aaneengesloten lijnstukken bestaande toonhoogtecontour waarin de voor waameming
irrelevance toonhoogtevariaties zi.jn weggewerkt, de zogenaamde gestileerde
toonhoogte-contour. Bovendien worden de klinkerinzenen gemeten en weergegeven. Dit laatste
gebeurt omdat het van belang
is
dat de toonhoogtebeweging juist gepositioneerd wordt in
de
lettergreep. De klinkerinzet
is
bier meestal het moment ten opzichte waarvan de
toonhoogtebeweging geplaatst client te warden.
Het ontwikkelsysteem moet dienen als basis voor een te ontwikkelen interactief
leerprogramma ter ondersteuning van het intonatieonderwijs aan doven. Hiertoe
zal
gebruikt warden gemaakt van de gebruikersomgeving
Microsoft-Wi~.
Momenteel wordt het systeem in een eerste proef getest op zijn bruikbaarheid voor het
intonatieondeIWijs aan doven. Een en ander betekent dat een door de leraar voorgesproken
en afgebeelde intonatiecontour door de leerling geimiteerd wordt. Hierbij krijgt de leerling
visuele terugkoppeling. 1ijdens het werken met het systeem worden een aantal
meet-resultaten opgeslagen. Voor elke imitatie worden een aantal waarden voor de toonhoogte,
klinkersterkte en amplirude opgeslagen. Verder wordt door de leraar voor elke irnitatie een
cijfer van 1 tot 5 gegeven, waarbij 5 de maximale en 1 de minimale score is. Een irnitatie
za1
verder in dit verslag ook wel trial genoemd worden. Momenteel wordt er gewerkt aan een
programma waannee deze meetgegevens kunnen worden bewerkt.
Het verslag is als volgt opgebouwd.
Inhoofdstuk 2 wordt de stageopdracht beschreven.
Verder geef ik een analyse van de siruatie aan het begin van de stage en behandel ik de door
mij ingevoerde veranderingen. Hoofdsruk 3 is een handleiding van het programma voor de
gebruiker en hoofdstuk 4 bevat de software-documentatie.
Inhoofdstuk 5 beschrijf ik een
aantal suggesties ter verbetering van het programma. Ten slotte is in de bijlage een listing van
de programmatuur te vinden. De hoofdsrukken zijn goed afzonderlijk te lezen zodat de lezer
alleen het voor hem relevante deel kan doomemen.
Hoofdstuk2
Beschrijving van
de
stage
2.1
Omgevingsanalyse
3
De
programmatuur bij het intonatiemeterproject
isop te splitsen in de volgende twee delen:
1. De
leerlingmodule:
Dit deel
isvoor de leerling gemaakt. Het best.a.at uit de software die
de werking van de intonatiemeter en de representatie van de toonhoogtecontour op het
beeldschenn verzorgt. Met behulp van de leerlingmodule worden van elke imitatie (of
trial)
een aantal gegevens opgeslagen in een zogenaamde
ANA-ftle[1].
2.
De
leraamwdule:
Dit deel is voor de leraar of onderzoeker gemaakt. Het best.a.at uit
software die
ANA-files omzet in een aantal statistische overzichten en grafiekjes•.
De
belangrijkste
inf
onnatiestromen die een rol spelen bij bet lesgeven met de computer zijn
weergegeven in Figuur 2.1.
leerll·ng
B-_.,..-
'module
leerlingleerling C leerlin.9
---module
r
invoer via stem )leroar invoervia
toetsenbord
diskettes metANA-files
leraarmodule
statistische software sort files • statl
files
stat2files
pitch filesplot files
leraar/
onderzoeker
Figuur 2.1:
De
belangrijkste
lnformatiestromen
in het fntonatiemeterpmject
[1] Gigi E.(1991), Onlwe,p
van een
Untversele Tekst -VO Module, Afstudeerverslagms.
• f.r zijn plannen om het lnvoerformaat voor de leraannodule te vcranderen. Aan het begin van mijn stage was dit echrer nag niet bekend.
Naam*
Hoofd_Naam *
Volgnummer*
Datum
Tijd
Geluisterd*
Beoordeling (
cijfer tussen 1
en
5}
verder voor een bepaald aantal stappen:
Commentaar (
de spraaktekst
en
het type)
Leraar*
Amplitude
Toonhoogte
Klinkerwaarde
Leerling
Oefentijd*
Tabel 2.1:
Inhoud van een
ANA-file
De
infonnatie die in een
ANA-file
staat is te zien in Tabel 2.1. De
beoordeling
is een cijfer
van een tot vijf dat de leraar geeft voor de imitatie van de leerling. Met spraaktekst wordt
bedoeld de tekst die de spraakuiting weergeeft en met spraaktypewordt bedoeld het soort
toonhoogtebeweging (bijvoorbeeld sterk dalend of een punthoed beweging) dat geoefend
is.
De
infonnatie met sterretjes wordt bij de verdere verwerking van de gegevens door de
leraarmodule momenteel niet gebruikt. De vorm van de overzichten
za.l
nader warden
toegelicht in hoofdstuk 3. Als voorbeeld is hier een pitcb-overzicht gegeven:
••• Pitch···
Pupil, Jimi
period: frOlll 16-1-1990 to 18·1·1992
sentence label trialnr mean deviation
e ad u ls u ad u ad u ad u 88 aa la aa la aa ad aa ad
category trialnr mean deviation vowel 1 273.77 114 .07
vowel 2 212.20 14. 57
vowel 3 265.47 0.00
category mean deviation
vowel 250.48 27.28 l l l 2 3 l l 2 l 2 454.82 107.31 302 .14 203.22 265.47 176.36 247.11 232.75 354.86 200.64 30.20 14.31 20.12 12.31 16.55 13.07 34.22 94.23 27.55 91.09
2.2
De
opdracht
Voordat ik mijn stage began was er al software geschreven die de overzichten kon
produceren. Mijn opdracht bestond uit:
1. Het oplossen van de geheugenproblemen bij de opslag van de AM-4-files.
2. Het oplossen van de geheugenproblemen binnen de programma's die de overzichten
moesten produceren.
3. Het user-interface gebruikersvriendelijker maken.
4. Het uitbreiden van de overzichten met spraaktypegegevens.
5. Het inbouwen van een mogelijkheid om typefouten in de spraaktekst te kunnen
verbeteren.
2.3
Aanpassingen
1.
Geheugenproblemen bij de opslag van
de
gegevens
Aan het begin van mijn stage werkte het lerarensysteem uitsluitend met de in te geven
ANA--files. Elke AM-4-ftle kost ongecompri.meerd ongeveer 5 Kb aan geheugen. Aangezien een
leerling per sessie gemiddeld ruim 30 imitaties doet en er dus ook per sessie ruim 30
ANA-files gemaakt warden is het al snel niet meer mogelijk om de AM-4-ANA-files van alle leerlingen
op
te slaan op een harde
schijf.
Een andere mogelijkheid zou zijn om steeds weer alle leerlingdiskettes in te voeren als een
overzicht geproduceerd moet warden. Dit
is
echter erg omslachtig, vooral als bijvoorbeeld
elke twee weken een overzicht over de hele periode tot
clan
toe gevraagd is. In de door mij
voorgestelde oplossing warden de ANA-files op floppydisks bewaard, maar hoeven de
gegevens slechts een keer in de leraarmodule ingeladen te warden (mogelijk verspreid over
meerdere inlaadsessies).
Ik heb onderzocht wat de minimale informatie is die binnen de leraannodule momenteel
nodig is voor het maken van de overzichten. Hierbij heb ik gebruik gemaakt van een
methode uit
(21 :
de informatie waar bet om gaat is weergegeven in een
sttUctuurdiagram
(zie Figuur 2.2). Elke
trial
wordt uniek geidentiflceerd door het tijdstip, de datum en de
leerling die de
trial
doet. Elke leerling
kan
immers maar
een
trial
tegelijk doen. Verder moet
van elke trial de beoordeling, gemiddelde toonhoogte, de deviatie van de toonhoogte en
natuurlijk bet oefenmateriaal bijgehouden warden.
[2] A.T .M. Aens, G. Albas, K.M. van Hee, Conceptueel Modelleren van Systemen, lien leidraad voor
systeemontwikkellng, Beperkte Uitgave 19<)1.
I- - - - -1 I
t··d
I I 11
"-I I '---J ',
'
·---,
I I: s.d. toonhoogte
~- __
I---'
,---,
I I __: gem. toonhoogte :
-L _____________ I ,I - - - ✓ I I ,• beoordeling ~,,
I I'
'
' '
leerling
,
---i
'
'
spraak
'
~---f
1-,1"'--- - - - -•
naam
:
~
~---J
sess1e
r
i- - - -,
---~ datum :
L - - - _1 ,---1 I__ -: spraaktekst
:
---'
L - - - _1materiaal
---,
- - I- -: spraaktype
IToelichting bii de notatie
L---'
1 object A----•--- B A---8 A r---8
c;2r--B
C ___________ ,, I I : eigenschop :L---•
Een eigenschop heert geen uitgoande pijlen
bij elke A hoort wellicht een B bij elke A hoort minstens
een
B bij elke A hoort precies een B A is uniek bepoold door B en CFiguur 2.2: Structuurdiagram bij
de
lerarenmodule
A.an
de hand van Figuur 2.2 heb
i,!{
besloten om enkele nieuwe filetypen in te voeren die
werken als een inteme store voor de lerarenmodule. Hiennee
krijgtbet lerarensysteem uit
Figuur 2.1 dus een intern geheugen. Dit
is
schematisch weergegeven in Figuur 2.3. De
geheugenkosten van de opslag van elke
trial
zullen uiteindelijk worden gereduceerd tot
ongeveer 28 bytes per trial. De nieuwe manier van opslag heeft de volgende voordelen:
•
De geheugenproblemen op de harde
schijf
zijn (vrijwel geheel) opgelost.
•
Het
is
niet meer nodig om elke keer alle diskettes in te voeren: alleen de nieuwe
diskettes moeten nog ingevoerd te worden.
leroormodule
..
stotistische software
pdiskettes
I I...
Imet ANA-files
I I I I I I 'f'.
inteme store
nomes.txt file
sents.txt file
store files
stst files
..
..
sort<nr>.txt
stot
1
<nr>.txt
stot2<nr>.txt
pitch<nr>. txt
plot<nr>.txt ·
leroor/
onderzoeker
Flguur 2.3: Nieuwe opzet voor
de
lerarenmodule
•
De statistische verwerking gaat sneller omdat binair weggeschreven en gelezen wordt.
•
Het wordt mogelijk de gebruiker te wijzen op bepaalde spelfouten aan de hand van
reeds
eerder ingevoerde uitingen/leerlingnamen en labels.
In de store zullen de volgende files bijgehouden worden:
1.
nam.es.tx:t:Het aantal leerlingen gevolgd door de lijst met alle leerlingnamen van
de
leerlingen die meedoen. De plaats waar een leerling in deze file staat, noem ik het
leerlingnummer.
Deze wordt bijgehouden met behulp van de leerling-informatie uit de
ANA -files die ingevoerd warden.
2.
sents.tx:t :Het ,aantal zinnen gevolgd door de lijst met alle zinnen die in de periode
gebruikt worden. Het woord 'zin' wordt hier gebruikt in de betekenis van 'spraaktekst',
er
kan
dus ook sprake zijn van alleen maar een klank.
De
plaats waar een zin in deze file
staat noem ik het
sentencenummer.
3.
labeltx:t :Het aantal labels gevolgd door de lijst met alle labels die in
de
pericxle
gebruikt worden. Labels geven het type van het spraakmateriaal aan.
De
plaats waar het
label in deze file staat noem ik het
labelnummer.
Verder zullen voor elke leerling uit de file
names.txt
met leerlingnummer
k
de
volgende
files bijgehouden warden:
4.
store<k>, stst<k> :
de trial gegevens voor elke trial. De files bestaat uit een integer
n,
bet aantal trials dat voor de leerling
is
opgeslagen, en
n
weggeschreven variabelen van
het type struct trial:
struct trial
{
}
time_t time;
int snr;
char label;
char judge;
float avp;
unsigned int devp;
betekenis
als gedefinieerd in time.h
het nummer van de zin
het nummer van het label
judgement '0' ••. '5'
average pitch
1
00 x deviation pitch
kosten in bytes
4
2
l
l
4
2
+
14
In
de
store
files zijn de trials gesorteerd op tijd en in de
ststfiles zijn ze gesorteerd op
zinen
per
zinweer op tijd. Deze dubbele opslag is nodig omdat er oak binnen de programma's
geheugenproblemen zijn. De problemen binnen de programma's zijn op dit moment
bepalend voar de hoeveeldheid trials die het systeem aankan.
2.
Geheugenproblemen binnen
de
programmatuur
De problemen binnen de programma's heb
ik
slechts gedeeltelijk kunnen oplossen. Voar
mijn stage was 660 een bovengrens voar het aantal trials dat per leerling verwerkt kon
warden. Dit probleem is nu opgelost.
Erkunnen nu ruim 10.000 trials per leerling verwekt
worden per 'inlaadsessie'. Door meerdere keren in te laden kunnen in prindpe willekeurig
veel trials opgeslagen warden, zolang er nag ruimte op de harde schijf is.
Er
zijn echter in de programmatuur voor het maken van de overzichten wel nag problemen.
In
deze programma's zijn er bovengrenzen voar het aantal zinnen, het aantal trials per
zinper leerling en het aantal sessies per leerling. Ik heb deze bovengrenzen behoarlijk kunnen
verhogen. Het blijkt,echter dat de grenzen in de praktijk nag te krap zijn. Dit betekent dat de
software grotendeels herschreven moet warden.
1k
heb geen tijd gehad am de software voor alle overzichten te herschrijven. Wel heb
ik
als
voarbeeld een module geschreven waarmee zes tabellen gemaakt warden zonder dat er
geheugenproblemen aptreden. De inhaud van de tabellen
zalbeschreven warden in
hoafdsruk 3. 1k heb de geheugenproblemen kunnen vermijden door de gemiddelden en
deviaties
on the fly
te berekenen: tijdens het doorlopen van de data warden gemiddelden en
deviaties bijgehauden en weggeschreven. Hierdoor hoeft er voor de elementen van de
tabellen geen geheugen gereserveerd te warden. Dit
isalleen mogelijk als de data op een
bepaalde manier gesorteerd
is.Voar het berekenen van een tabel wordt de infonnatie die
nodig
isdan
oak gesorteerd in een voar die tabel geschikte volgorde.
Omdat het sorteren in het geheugen plaatsvindt, is er nog wel een bovengrens voar het
aantal trials dat per leerling verwerkt
kan
warden.
Erkunnen echter zeker 25.000 trials per
leerling veiwerkt worden. Wanneer men zeker wil zijn dat de uiteindelijke versie CXlk
tabellen over meerdere jaren van intensief gebruik aankan,
zal
het sorteeralgoritme zo
aangepast moeten worden dat het gebruik maakt van achtergrondgeheugen, bijvCXlrbeeld
de
harde schijf. De tabellen zullen dan CXlk aangepast moeten worden omdat ze anders
onoverzichtelijk worden.
1k heb vCXlr het maken van
de
zes tabellen een procedure geschreven waarmee als
parameter meegegeven wordt water in de tabel bij elkaar moet komen te
staan:de
zinnen,
labels of sessies. Hiervan kunnen er twee gekozen worden zodat bijvCXlrbeeld een
overzicht per sessie per zin of per label per sessie gevraagd
kan
worden.
Zo
onstaan dus 3
x 2 • 6 tabellen. Deze aanpak bespaart een heleboel ccxle. Bovendien heeft dit het vCXlrdeel
dat alle tabellen er hetzelfde uitzien en dat veranderingen automatisch in alle tabellen
tegelijk veranderd worden {bijvCXlrbeeld een extra gemiddelde). Het is CXlk gunstig
VCXlftoekomstige uitbreidingen: als bijvCXlrbeeld een extra opsplitsing van de trials nodig is,
krijgt men 4 x 3 - 12 - 6 • 6 tabellen in
een
keer er bij.
3.
Het
user
interface
Het user interface biedt nu meer flexibiliteit in de vorm van een menu. Er kunnen gegevens
geproduceerd worden zonder nieuwe data in te laden en er kunnen gegevens ingeladen
worden zonder overzichten te produceren.
Zo
kan
nu bijvCXlrbeeld achteraf besloten
worden informatie over een bepaalde periode op te vragen.
Erzijn CXlk enkele faciliteiten
ingebouwd om gegevens uit te wissen. Het user interface
zal
uitgebreid worden beschreven
in hCXlfdsruk 3.
4.
Spraak-typegegevens
De spraak-typegegevens worden nu in de vorm van labelnummers opgeslagen in
de
store-en stst-files.
In het pitcb-overzicht wordt nu onderscheid gemaakt russen zinnen met
verschillende labels. Bovendien zijn er spraak-typegegevens te vinden
in
vier van de zes
tabellen die met de nieuwe module
tabel
te maken zijn.
s.
Correctie van tikfouten
/
Als het systeem een nieuwe zin, label of leerlingnaam in een AM4-file tegenkomt wordt aan
de gebruiker gevraagd of er sprake is van een tikfout.
Erbestaat dan de mogelijkheid om de
zin, label of naam opnieuw
in
te voeren. Pas
a1s
een zin, label of naam goedgekeurd
iswordt de lijst met zinnen, labels of names aangepast.
Naast deze aanpassingen heb ik bovendien een installeerprogramma geschreven zodat het
installeren van de programmaruur nu zeer eenvoudig is.
Hoofdstuk3
Gebruikershandleiding
Met de lerarenmodule kunnen uit
ANA
-files een aantal (statistische) overzichten gemaakt
worden.
Indeze handleiding zal eerst het installeren van
deprogrammatuur op harde schijf
behandeld worden. Vervolgens zullen de verschillende functionele mogelijkheden en de
vorm van de verschillende overzichten beschreven worden.
Erzal ook nog iets gezegd
worden over mogelijke problemen die tijdens het gebruik kunnen ontstaan. Ten slotte zal
ter
verduidelijking van elk overzicht een voorbeeld gegeven worden.
3.1
Het
installeren
U installeert het systeem door het programma
install
van de installeerschijf aan te roepen.
Hiermee worden automatisch de benodigde directories en files geopend. De
programmatuur zal neergezet worden in de directory stmod.
3.2
Het
opstarten
Het opstarten van het programrna gaat als volgt:
• kies directory stmod door
11cd stmod\
11in te typen. Alie overzichten worden naar deze
directory geshreven
• tik
"stmod" in, waarmee het programma geactiveerd wordt.
3.3
Het
hoofdmenu
Als het programma ingeladen
is,verschijnt het hoofdmenu.
Inhet hoofdmenu heeft u de
volgende keuzes :
l. load nieuwe data in
2. Produceer de statl files
3. Produceer de stat2 files
4. Produceer de pitch files
5. Produceer de tabel files
6. Moak een lijst van zinnen
7. Verwijder de data van een leerling
8. Verwijder de data van alle leerlingen
9. Verwijder de data van alle leerlingen en alle zinnen
l 0. Stoppen
Ad 1
Als u keuze
1
rnaakt in het hoofdmenu wordt gevraagd van welke pad u de data wilt
lezen. Als u bijvoorbeeld van drive
A wiltlezen,
tik
clan
"a:" in.
Als het programrna
tijdens het inlezen een nieuwe leerlingnaam, zin of label ziet, zal gevraagd worden of
dit inderdaad een nieuwe naam
isof dat er sprake
isvan een tikfout.
In
dit laatste geval
kunt u de fout verbeteren. Na het inlezen moeten
de
ingelezen trials gesorteerd
worden. Dit
kan
enige tijd in beslag nemen.
Ad
2Door optie
2te kiezen krijgt u van elke leerling met nummer n een file met naam
statl<n>.txt. Hierin
staande volgende overzichten:
1. sessievolgnr I zin (=spraaktekst) I trialnr I beoordeling
a/le trialbeoordelingen op chronologische volgorde
2. sessievolgnr I zinnr I zin I aantal keer dot beoordeling 1,2,3,4 en
5
is
gegeven
overzicht van de verdeling van de beoordelingen per zin voor elke sessie
3. sessievolgnr I zinnr I zin I absoluut en relatief aantal keer dot een beoordeling
uit de categorieen
l
+2,3 en
4+5
is
gevallen
overzicht van de verdeling van de beoordelingen per zin voor elke sessie in drie
categorieen
4.
zinnr I zin I gemiddelde beoordeling I deviatie van de beoordeling
I aantal beoordelingen bij de zin
overzicht van gemiddelde
endeviatie over de beoordelingen per zin
Ad 3
Door optie 3 te kiezen krijgt u van elke leerling met nummer n een file met naam
l.
zinnr I lijst van beoordelingen in chronologische volgorde I gemiddelde
beoordeling
1
deviatie van de beoordeling
lijst van beoordelingen in chronologische volgorde met gemiddelde beoordeling
en
deviatie van de beoordeling per zin
2. trialvolgnr I gemiddelde beoordeling I deviatie beoordeling I aantal
beoorclelingen met dot trialvolgnr
gemiddelde
endeviatie van de beoordeling per trialvolgnr (a/le zinnen samen).
/
stat2<n>.txt. Hierin staan de volgende overzichten:
Verder kunt u, indien gewenst, grafiekjes laten maken in de file
plot2<n>.txt.
Erkan
van elke zin een grafiek gemaakt worden of er kunnen zinnen of periodes vergeleken
worden in grafiekjes.
In
de grafiekjes
issteeds de tijd uitgezet tegenover de
beoordeling.
Ad 4
Door optie
4
te kiezen krijgt u van elke leerling met nummer
n
een file met naam
pi,tcb<n>.txt. Hierin staan de volgende overzichten:
1.
zin I labelnr (=zinstype) I trailvolgnr I gemiddelde toonhoogte I deviatie van
de toon hoogte
lijst van a/le gemiddeldes
endeviaties van de toonhoogte per zin per labelnr
per trialvolgnr.
2.
zinscategorie I trialvolgnr I gemiddelde toonhoogte I deviatie van de
toonhoogte
lijst van a/le gemiddeldes
endeviaties van de toonhoogtes per zinscategorie per
trialvolgnr (a/le zinnen van
eencategorie samen).
3.
zinscategorie
I
gemiddelde toonhoogte
I
deviatie van de toonhoogte
overzicht van de gemiddelde toonhoogte
en
de deviatie van de toonhoogte per
zi nscategorie
Ad.S
Met optie
S
kunt u een zestal tabellen maken die weggeschreven worden naar de
directorie tabel .
De
tabellen hebben allen de volgende vorm:
A
B
judgements
lijst van judgements met A a 1 en B b1 1
[ gemiddelde en deviatie van de lijst
1
lijst van judgements met A a 1 en B b 1
2[ gemiddelde en deviatie van de lijst
1
..
[ gemiddelde en deviatie van de lijst van judgements van ad
etc.
Hierbij zijn A, B steeds 'sentence','label' of 'session',~ de i-de
zin,
label of sessie en bii de
j-de
zin,
label of sessie bij
~-Ad 6
Met optie
6
kunt u een lijst met zinnummers en de bijbehorende zinnen produceren.
Dit
is
nodig om de overzichten die gebruik maken van zinnummers te begrijpen. De
zinnen worden weggeschreven naar de file
sentence.txt.
Ad 7 Door aptie 7 te kiezen kunt u de gegevens van een leerling uitwissen. De gegevens
kunnen niet meer terug gehaald warden, zcxlat alle data met behulp van ANA-files
apnieuw moet warden ingelezen.
Ad
8
Als u optie
8
kiest, warden alle leerlinggegevens uitgewist, zcxlat bijvoorbeeld aan het
eind van een periode helemaal apnieuw begonnen
kan
warden.
Ad
9
Als u aptie
9
kiest, worden alle leerlinggegevens uitgewist. Bovendien warden alle
zinnen verwijderd. Als men in een nieuwe periode weinig aude zinnen verwacht, is het
vertstandig deze aptie in plaats van aptie
6
te maken.
Ad 10 Als u het programma wilt
ftrlaten, moet u keuze 10 maken.
3.4
Geheugengrenzen
Er
zijn grenzen aan de hoeveelheid gegevens die het systeem aankan.
Voor de overzichten
pitch, st.atl, stat2:
Maximaal aantal zinnen :
l
00
Maximaal aantal trials per zin per leerling : 250
Maximaal aantal sessies per leerling : 100
Maximaol aantal trials dot in een keer ingeladen kan worden : 10000
Voor de
tabel
overzichten:
Maximaal aantal zinnen : 1000
Maximaal aantal s.essies per leerling : 500
Maximaal aantal trials per leerling : 25.000
Indien de geheugengrenzen een anoverkamelijk abstakel vormen, dient contact opgenamen
te worden met de programmeurs.
3.5 Berekening van bet gemiddelde en de spreiding van de
toonhoogte
We rekenen eerst de toonhoogtes uit de ANA-files om near ERB. Dit doen we met
behulp van deling door 100. Daarna zetten we de zo verkregen frequenties in ERB
om near Herz met behulp van de volgend formule:
f
= 165.4 (1
oo.06E_1)
waarbij E de toonhoogte in ERB en
f
de frequentie in Herz is.
Het gewogen gemiddelde wordt als volgt bepaald:
u =
(SUM
i::
w[i]
xf[i]) /
(SUM
i::
w[i])
waarbij
w[i]
= amplitude[i]/1000.
De gewogen spreiding s volgt met berekening van relatieve importantie:
w'[i]
=
nxw[i] /
(SUM
i::
w[i])
(SUM
i:: w'[i]xf[i]2 -
(SUM
i:: w'[i]xf[i]
)2 /
n
s2
=
-n-1
n
(SUM
i:: w[i]xf[i]2)
= - - x ' ( - - - u2)
n-1
(SUM
i:: w[i])
waarbij n het aantal waarnemingen is.
Is de gewogen spreiding groter dan 10, dan wordt het hiervoor beschreven
algoritme herhaald voor alle pitch waarden, die voldoen can:
u - 3*d < pitch < u + 3*d
3.6
Voorl:,eelden
Hier volgt van elke van de overzichten
pitch, statl ,stat2
en
tabel
een voorbeeld .
••• Pitch··· Pupil: Jimi
period, from 16·1-1990 to 18·1·1992
sentence label trialDZ -an deviation
category trialnr vowel vowel vowel category vowel •·· Statl Pupil: Jimi l 2 3 mean 250.48 e ad u la u ad u ad u ad u
••
aa ls aa la aa ad Ila ad mean deviation 273.77 114.07 212.20 u. 57 265.47 0.00 deviation 27.28 period, from 16·1·1990 to 18·1·1992 l l l 2 3 l l 2 l 2 454.82 107.31 302.U 203. 22 265.47 176.36 247 .11 232.75 354.86 200.64 30.20 14.31 20.12 12.31 16.55 13.07 34.22 94.23 27.55 91.09I
pitch - tabel
21
I
pitch - tabel
3
I
I
pitch - tabel
1
I
aeasionnr l 2 3 4 4 4 5 5 6 7sentence trialnr judgement
u l 3 u 2 3
I
slat 1 - label 1
I
u 3 1 u 4 3 aa l 2 aa 2 3 e l 4 u 5 5 aa 3 3 aa 4 4aeasionnr aentencenr aentence number of judgements,
l 2 3 4 5
jstatl - tobel 2
I
l 3 u 0 0 l 0 0 2 3 u 0 0 l 0 0 3 3 u l 0 0 0 0 4 3 u 0 0 1 0 0 4 4 aa 0 l l 0 0s
2•
0 0 0 l 0 5 3 u 0 0 0 0 l 6 4 aa 0 0 l 0 0 7 4 aa 0 0 0 1 0aeaaionnr aentencenr l 2 3 4 4 5 5 6 7 3 3 3 3 4 2 3 4 4 aentence number of abaolute u 0 u 0 u 1 u 0 aa l • 0 u 0 aa O aa O judgement a relative o.oo o.oo 1.00 o.oo 0.50 o.oo 0.00 0.00 0.00 1+2 number of absolute 1 1 0 1 1 0 0 l 0 jud9e11ents 3 relative 1.00 1.00 o.oo 1.00 0.50 o.oo 0.00 1.00 0.00 aentancenr 2 ■ entence e u aa mean deviation 4.00 0.00 number of triala: 1 3 4 ••• Stat2 •·· Pupil: Jillli 3.00 1.26 5 3.00 0.71 4 period, from 16-1·1990 to 18·1·1992 aentencenr 2 3 4 jud9e11enta
"
3 3 l 3 5 2 3 3 4 trialnr 1 2 3 4 5 mean deviation 3.00 0.82 3.00 0.00 2.00 1.00 3.50 0.50 5.00 o.oo 11ean deviation 4.00 0.00 3.00 1.26 3.00 0.71I
stat2 - tabel
1
I
stat2 - tabel 2
I
lstatl -tabel
3
I
number of absolute 0 0 0 0 0 1 l 0 l jud9e11ents relative o.oo 0.00 o.oo o.oo o.oo 1.00 1.00 0.00 1.00jstatl -tabel
41
Gebruikersbandleiding• • · 'l'abel l · · · ·
Leerling ,Jimi
Van, Tue Jan 16 15:30,55 1990
Tot: Sat Jan 18 11:29:52 1992
label aentenee ls u aa { average, 2.6?, ad
•
u aa ( average: 3.33, 88 u ( average, 3.00, 3 average, 3.00, 2 3 { average: 2.50, deviation 0.47 I 4 average: 4.00, 5 3 1 average, 3.00, 3 4 ( average: 3.50, deviation 1.25 J 3 [ average: 3.00, deviation 0.00 IITobel
1
deviation 0.00 J deviation 0.50 I deviation 0.00 J deviation 1.63 l deviation 0.50 ) deviation 0.00 )··· Tabel 2 ··•·
Lee.ding ,Jimi
Van: 'l'ue Jan 16 lS:30:SS 1990
Tot, Sat Jan 18 11:29:52 1992
label aeesion la 16-1·1990 16-1-1991 16·1·1992 judgements 3 average, 3.00, 2 ave.rage: 2.00, 3 I ave.rage: 2.67, ad I ave.rage: 3.00, deviation 0.47 J 15-1-1991 l ave.rage, 1.00, 16·1·1991 3 3 ave.rage: 3.00, 17•1·1991 4 5 ave.rage: 4. so, 18·1·1992 4 [ average: 4.00, I average: 3.33, deviation 1.25 I 8S 17•1·1990 3 I ave.rage: 3.00, l ave.rage: 3.00, deviation 0.00 J
!Tabel
2
deviation 0.00 J deviation 0.00 l deviation 0.00 ) deviation 0.00 I deviation 0.00 I deviation 0.50 I deviation o.oo J deviation 0.00 J Gebroikersbandleiding••• Tabel 3 •·•• Leerling :Jimi
Van: Tue Jan 16 15:30:55 1990
Tot: Sat Jan 18 ll,29,52 1992
jTabel
3
•entenee label judgements
e ad I average: 4.00, u ls ad 811 ( average, 3.00, aa ls ad [ average, 3.00, 4 ( average, 4.00, deviation 0.00 I deviation 3 average, 3.00, 3 5 l average: 3.00, 3 I average: 3.00, 1.26 I 2 3 average: 2.50, 3 4 I average, 3.50, deviation 0.71 J deviation 0.00 I deviation 0.00 I deviation 1.63 I deviation o.oo I deviation 0.50 I deviation 0.50 I
••• Tabel 4 · · · ·
Leerling :Jimi
Van: Tue Jan 16 15:30:55 1990 Tot, Sat Jan 18 11:29:52 1992
aentence aeaaion
•
17-1-1991 4 ( average: 4.00, I average: 4.00, deviation 0.00 J u 16-1-1990 17-1-1990 15-1-1991 16-1-1991 17-1-1991 I average: 3.00, deviation..
16-1-1991 16-1-1992 18-1-1992 3 average: 3.00, 3 average: 3.00, 1 average: 1.00, 3 average: 3.00, 5 I average: 5.00, 1.26 I 2 3 average: 2.50, 3 average: 3.00, 4 ( average: 3.00, [ average: 4.00, deviation 0.71 JITabel
4
judgements deviation 0.00 J deviation 0.00 I deviation 0.00 I deviation 0.00 I deviation 0.00 I deviation 0.00 I deviation 0.50 ] deviation 0.00 ) deviation 0.00 ] Gebruikersbandleiding•·• Tabel 5 •••• Leerling ,Jimi
Van, Tue Jan 16 15,30:55 1990 Tot: Sat Jan 18 11:29:52 1992 eession label 16-1-1990 ( average: 3.00, 17•1-1990 88 ( average: 3.00, 15•1·1991 acl I average: 1.00, 16·1·1991 ls eel I average: 2.67, 17•1·1991 ad [ average, 4.50, 16·1-1992 la ( average: 3.00, 18·1·1992 ad ( average: 4.00, judgements 3 [ average: 3.00, deviation 0.00 ) 3 [ average: 3.00, deviation 0.00 I 1 I average: 1.00, deviation 0.00 I 2 average, :LOO, 3 3 I average: 3.00, deviation 0.47 J 5 4 I average: 4.50, deviation 0.50 I 3 I average: 3.00, deviation 0.00 I 4 [ average: 4.00, deviation 0.00 I
ITabel
5
deviation 0.00 ) deviation 0.00 J deviation 0.00 I deviation 0.00 J deviation 0.00 I deviation 0.50 I deviation 0.00 I deviation 0.00 )•·· Tabel 6 ·•·· Leerling ,J'imi
Van: Tue Jan 16 15:30:SS 1990
Tot, Sat Jan 18 11:29,52 1992
8ession sentence 16·1·1990 u I average, 3.00, 17•1·1990 u [ average, 3.00, 15·1·1991 u ( average: 1.00, 16·1·1991 u aa I average, 2.67, 17•1·1991 e u ( average, 4.50, 16-1-1992 aa ( average, 3.00, 18·1-1992 aa I average, 4.00, 3 I average: 3.00, deviation 0.00 ) 3 I average: 3.00, deviation 0.00 I 1 [ average: 1. 00, deviation 0.00 ) 3 average: 3.00, 2 3 I average, 2. 50, deviation 0.47 I 4 average, 4,00, s I average, 5.00, deviation 0.50 ) 3 I average: 3.00, deviation 0.00) / 4 ( average: 4.00, deviation 0.00 I
ITobel
6
judgements deviation 0.00 ) deviation 0.00 J deviation 0.00 ) deviation 0.00 I deviation O.SO J deviation 0.00 J deviation 0.00 J deviation 0.00 I deviation 0.00) <Jebruikersbandleiding25
Hoofdstuk4
Software documentatie
4.1
Algemeen overzicht van
de
fllestructuur
In Figuur 4.1
is
een overzicht te zien van
deftlestructuur. Hoofdstuk 4
is
opgebouwd
,---
-·
I ,_L_J_ I:_~~~~~:
I ; llat2<lnr>.bd : '.
I - lt ; Tctnr>P<lnr>.bd :: J . . . , . . . -I • r- ... _ ----, « 'l - -· .. ~- ... · 1 I I : 11atl<lnr>.bd '. • plot2<lnr>.bd ; keuze 2,3,4 : overzicht prodix:eren slmod keuze I : inloden notatie: I I ... ,. .. r---( I I I I I I I I'
I '.
'.
', I ' t "", , ' I'
~ I > 't ..,._ I '\. I -., 7l..,. ' , J , \ I , ... '"" "" t ' I~-,--
... ___ , I , I I ' , I , ' r:•-~~"•••• I •• :;: ••• , , names.Ix#: ---··• :slore<lnr> : : sents.bd : : stsl<lnr> :~--•40:•-• :
labels.bet : ~--,.,.----• ' ,.... f____
..,_,____ I ,,, ... ~~ ', ,' .. ..'"'
, ... '.
, , ' ' ---' ---'--·
... "'I,..,_,.. __ : ANA-files ' I I---·
module met eigen functie main() A
(...binding met bovenkont) A least uit file f
module zcnder functie main(I
r ... ,
: slore<nr> : permonente opslogfile
---·
r--··,., -,
I lsf<nr> I lijdelijke datal'ile~---'
pi#r::hcnr>.bd----'----,
: f :,..
...
,.
...
B (...binding met onderkont)
B least uit en/ of achrij~ in file f
<lnr> • '-"lingnummer
<lnr:> • tabelnummer
Figuw-4.1
rondom Figuur 4.1. Eerst worden in paragraaf 4.2 de datafile-forrnaten behandeld. Daama
worden in paragraaf 4.3 de programma's kort besproken. In de rest van de paragraaf worden
de programma's meer in detail besproken (paragraaf 4.4 - 4.13).
4.2
Overzicht van
datafl]e-formaten
In deze paragraaf
zaleen overzicht van alle door de programmatuur gebruikte filefonnaten
gegeven worden.
Een
ANA.ftle is een tekstftle met daarin
de infonnatie over een trial. De
infonnatie met een
*
wordt op dit
moment niet gebruikt. Het uitlezen van
ANA.ftles
vindt plaats in
afread.Het
commentaarin een
ANA-filebestaat
uit de spraaktekst met daar achter tussen
haakjes het spraaktype.
1.ANA
I I, ANA-files :
I _ _ _ _ _ _ _ _ _ 1 Naam*: Hoofd_Naam *: Volgnummer*: Datum: Tijd:Commentaar : (de
spraaktekst
enhet type)
Leraar*: Leerling : Oefentijd* : Geluisterd* :
Beoordeling :
(cijfer tussen 1
en5)
verder voor
eenbepaald aantal stappen:
Amplitude Toonhoogte Klinkerwaarde
2.
tst<nr>
r-' tst<lnr> :
~
-
---
-
_,
Een ongesorteerde lijst van trial gegevens:
Tijd\Datum Zinnummer Labelnummer Beoordeling gem.toonhoogte dev. toonhoogte
waarbij Tijd\Datum gelijk is
aan eenstring van de vorm:
Joor - Maand - Dag Uur: Minuut: SecondeBij elke leerling met nummer nrwaarvan zojuist inforrnatie is ingelezen hoort een
tst<m'>file
met daarin de infonnatie van de zojuist ingelezen trials. Alleen de infonnatie die nodig is
wordt bewaard. In plaats van een spraaktekst en spraaktype zijn het bijbehorende
zinnummer en labelnummer opgeslagen•. De gemiddelde toonhoogte en de deviatie van de
toonhoogte zijn opgeslagen tot twee cijfers achter de konuna. De
tstfiles worden gernaakt in
afread
en gelezen in
sort.3. names.bet/ sents.txt / label.txt
Een getal
n
dot aangeeft hoeveel leerlingnamen/ zinnen / labels
opgeslagen zijn gevolgd door de lijst van /zinnen/ labels (steeds
gescheiden door returntekens}.
i - - - -.
• names. txt •
I I, sents.txt
,
: labels.txt :
I I---In
de tekstfiles names.txt, sents.txt en label.txt warden repectievelijk alle leerlingnamen,
zinnen en labels bewaard.
De
plaats waar een leerling /
zin /label in deze file staat komt
overeen met het leerling- /
zin-I label-nummer.
De
files wordt bijgewerkt in
afread
en
uitgelezen in pitch, statl
en
stat2.
4.
tstnr
De lijst met de nummers van de leerlingen waarvoor zojuist
een
I I
, tstnrs ,
,
_____
,
tst-file is gemaakt. De nummers zijn gescheiden door spaties. De lijst wordt
afgesloten met het cijfer -1 ( end-of-file teken}
De
file
tstnrwordt gemaakt in
afread
en gebruikt in
sort.
5.
store<nr> , stst<nr>
Dit zijn binair weggeschreven files die bestaan uit
een
integer
n
gevolgd door n
structures van het type trial:
struct trial
{
}
time_t time;
int snr;
char label;
char judge;
unsigned int avp;
unsigned int devp;
betekenis
als gedefinieerd in time.h
het nummer van de zin
het nummer van het label
jydgement
10
1 ••• 15'
1
00 x average pitch
1
00 x deviation pitch
---,
:store<lnr> :
._
_______
,
i---,
• stst<lnr> :
._
_______
,
De
files
store<nr'> en stst<nr> zijn files waarin alle trials van leerling nr
staanopgeslagen.
In
de files
store<nr> zijn de trials gesorteerd op tijd.
In
de files
stst<nr'> zijn ze opgeslagen
op zinnummer en per
zinop tijd. Deze dubbele opslag
isnodig om geheugenproblemen
binnen de programma's pitch,statl en stat2 te vermijden. Pitch en statl gebruiken
store<nr'> files en stat gebruikt stst<nr> files.Verder zijn er nog de uiteindelijke uitvoerftles
statl<n1'>.txt, stat2<n1'>.txtenpitcb<n1'>.txt. Voor een beschrijving van deze files verwijs ik
naar hfst 3, de gebruikershandleiding.
4.3
Kort ovenicht van
de
programma's
Het programma
stmod
ishet user interface. Dit deel zorgt ervoor dat de gewenste execute
files worden aangeroepen. Het prograrnma regelt zelf de gebruikerskeuzen 7, 8 en 9 :
hiennee
kan
eendeel van de gegevens uitgeveegd worden.
Het programma
pupils,
waarbij het project 'pupils.proj' hoort, verzorgt het inlezen van
de
data. De data wordt omgezet
naar
tst -files. Hiervoor worden de deelprogramma's
fdisks,
pllst2 en
afread
gebruikt. De nummers van de leerlingen waarvan
AM4-files gevonden zijn,
worden opgeslagen in de file
tstnr. In
dit deel worden ook
de
files
names.txt met
leerlingnamen en
sents.txt met zinnen ( •spraakteksten) en /abel.txt met labels
( •spraaktypes) aangepast. Hierbij wordt als controle bij elke
zinaan de gebuiker gevraagd of
er niet sprake
isvan een typefout.
Het programma sort wordt door
stmod
aangeroepen zodra er een nieuwe portie gegevens
ingeladen
is.Sort sorteert de
tst -files die in tstnr staan en
schrijft
ze weg naar
sort en stst
-files.
De programma's statl, stat2,
en pitch
produceren uit de opgeslagen gegevens de
overzichten
statl<n1'>.txt, stat2<n1'>.txt, enpitcb<n1'>.txt, voor elk leerlingnummer nr
waarvoor er inforrnatie opgeslagen is. Statl
en pitch
maken gebruikt van
store ~tles en
stat2 maakt gebruik van
stst -files. Alle drie de programma's maken gebruik van sents.txt en
names.txt.
Ten slotte zijn er nog de hulpfiles
conlim.h
met constanten en de structure
trial en de file
load.h
met de functie
load_to_an-ay die in de meeste prograrnma's gebruikt wordt.
29
4.4
Pupils
I
pupils
I •
11I
fdisks
I • .,
I
plist2
H
afread
I
Het programma pupils verzorgt het inlezen van de data. In het project pupils worden de
source files
puplls.c, fdisks.c, plist2.c,
en
afreadc
gebruikt.
1.
De
source
file
pupils.c
In het programma
puplls.c
worden
de
leerlingnamen, zinnen en labels ingeladen in
de
globale arrays names, sents en label. Verder worden de variabelen maxname, maxsent,
maxlabel
van de juiste waarde verzien. Een variabele van de vonn max"iets" geeft
de
maximale waarde
aanwaarvoor dat array gedefinieerd is. Indien het array vanaf
0
gedefinieerd is, zijn er
dan
dus max
11iets'
1+
1
"iets'-en.
Het programma pupils.c
maakt
gebruik van de sourceftle
fdisks
door middel van een aanroep van de functie disks.
2.
De
source
file f
disks.c
De ftle
fdisks.c
bevat de functie disks. Hierin wordt aan de gebruiker een padnaam
gevraagd. De functie maakt gebruik van de file
plist2
door middel van een aanroep van de
functie listjUes.
3.
De
source
file
plist2.c
De file
plist2.c
bevat
de functie list.files. Hierin worden alle ANA-files in de gegeven
directory gezocht. Het inlezen van
eenANA-file wordt gedaan in de functie a/read. Deze
functie wordt via parameter/ van list.files aangeroepen.
De
functie a/read
is te vinden in de
file
afread.c.
4.
De
source file afread.c
De file
afread.cbevat de functies flnd_nr, cbeck_nr, mean_and_deviation en a/read.
De functie
flnd_nr
zoekt de plaats waar een string voorkomt in een array. Dit wordt
gebruikt voor het vinden van
een zin-I
label- of leerlingnaam- nummer. De functie
cbeck_nr vraagt een bevestiging van de gebruiker als er sprake is van een nieuwe zin, label
ofnaam.
De functie
mean_and_deviation
berekent het gemiddelde en de deviatie van een
aantalfloating point variabelen uit een array.
De functie a/read
schrljft
met de zojuist gegeven functies een
ANA-file om naar
eenregel in
de
tst-filevan de betreffende leerling. Ook worden nieuwe zinnen, labels en leerlingnamen
toegevoegd aan de files sents.txt, names.txt
en label.txt.
4.5
Sort
In
het programma
sort.c
worden de
trials
uit de tst files gesoneerd en weggeschreven naar
store en stst
files.
De
functie main roept de functie tst_to_sort
twee keer aan.
De
eerste keer worden de
store-files geproduceerd of aangepast en de tweede keer de stst-store-files.
De
functie tst_to_sort leest uit
de
tstnr-file welke tst
files gesoneerd moeten worden. Met de functie sort
worden de trials uit
een tst.ftle gesoneerd.
bf!
worden weggeschreven naar de tijdelijke file sort,
in het zelf de
fonnaat als de store
en
stst
files.
Nadat voor leerling nr de tst<nt'>-ftle is gesoneerd en de sort -ftle weggeschreven is zijn er
twee mogelijkheden: Voor deze leerling bestaan de store
en stst
ftles nog niet of ze bestaan
al wel.
Inhet eerste geval kunnen de store
en stst-
ftles eenvoudig gemaakt worden door te
'renamen' en vooraan in de ftle het correcte aantal trials in te vullen (dit aantal was bij het
openen van de ftle nog net bekend, maar er is wel een ruimte voor open gelaten door een
willekeurig getal weg te schrijven). In het tweede geval wordt er 'gemerged' waarbij
dubbelen worden weggegooid. Dit alles is dus terug te vinden in de functie tst_to_sort.
In
de functie sortvindt het eigenlijke soneren plaats. Dit gebreun op een nogal inefficiente
manier. Hierover is in het deel paragraaf 4.11,
mogelijke verbeteringen,
meer te vinden.
Inde
functie sort
vindt ook de conversie plaats naar het binaire formaat. Hiervoor wordt gebruik:t
gemaakt van een aantal standaardfuncties uit C. Zo is de tijd opgeslagen in het formaat
'aantal seconden na 1 januarie 1970'. Dit is een eenvoudige en effidente manier van opslag.
Voor meer details en standaard conversiefuncties verwijs
ik
naar de handleiding van C.
De
floatingpoint waarden zijn ook om effidentieredenen, opgeslagen als unsigned integers. Dit
is mogelijk omdat de waarden toch slechts tot twee djfers achter de komma nauwkeurig zijn
en omdat de waarden binnen het gebied van O tot 600 liggen.
4.6
Stmod
stmod
De naam
stmod.c
staat voor statistiscbe module. Dit program.ma roept de gebruiker aan als
hij een sessie wil beginnen. Met behulp van het Boreland C++ commando
system
warden
bij bepaalde keuzes van de gebruiker de execute files
puplls.exe, sort.exe, pitch.exe,
statl.exe en stat2.exe
aangeroepen. Met keuze 6
kan
een lijst van alle gebruikte zinnen
gernaakt warden. Hiervoor wordt met de functie senlist gebruikt. De keuzes 7, 8 en 9
hebben betrekking op het uitvegen van bepaalde delen van de gegevens:
• bij het uitvegen van de gegevens van
een
leerling nr (keuze 7) warden de files
store<.nr>
en stst<nr> uitgeveegd. Hiervoor wordt de functie delpup gebruikt.
• bij het uitvegen van de gegevens van alle leerlingen (keuze 8) warden alle store<.nr> en
stst<nr'>
files uitgeveegd. Hiervoor wordt de functie de/all gebruikt.
• bij het uitvegen van de gegevens van alle leerlingen en alle zinnen (keuze 9) warden alle
store<.nr>
en stst<nr> files en alle zinnen uit sems.txten alle leerlingnamen uit names.txt
verwijderd. In feite bestaan de files sents.txt en names.txt clan alleen nog maar uit het
cijfer O : het aantal zinnen/namen. Dit alles wordt met de functie delsen gedaan.
4.7
Pitch
I
pitch
Het programma
pitch.c
produceert voor iedere leerling met nummer nruit store<nr'>,
names.txt, label.txt
en sents.txt een pitcb<nr>.txt file.
De
functie main roept store_to_pitcb
aan. Deze functie laadt de zinnen, labels en leerlingnamen in en opent per leerling nrde
file store<.nr>. De functie pitch leest de geopende file en schrijft naar de pitch<nr>.txt file.
De gegevens die per trial uit storefile gebruikt warden zijn : tijd, zinnummer, labelnummer,
gemiddelde toonhoogte en de deviatie van de toonhoogte. Voor een beschrijving van het
overzicht verwijs ik weer naar de gebruikershandleiding.
Er
word onderscheid gemaakt in
de spraaktekst<ategorieen vowel, cv, word en sentence. De berekenening tot welke
categorie een spraaktekst behoort wordt gemaakt in de functie type. De term
'zin'
heeft hier
dus twee betekenissen: het
iseen willekeurige spraaktekst, te vinden in sents.txt, en het
iseen van de vier subcategorieen
yan
de verzameling spraakteksten.
4.8
Statl
statl
Het programma statl.c produceert voor iedere leerling met nummer nruit store<nr>,
names.txt, label.txten sents.txteen statl<nr>.txtfile. De functie main roept store_to_stat1
aan. Deze functie laadt de zinnen en leerlingnamen in en opent per leerling nrde file
store<nr>. De functie stat1 leest de geopende file en schrijft naar
de
statl<nr>.txt file. De
gegevens die
per trial
uit storefile gebruikt worden, zijn : tijd, zinnummer en beoordeling.
4.9
Stat2
Het programma stat2.c produceert voor iedere leerling met nummer nruit stst<nr>,
names.txt, label.txten sents.txteen stat2<nr>.txtfile. De funtie mainroept stst_to_stat2aan.
Deze functie laadt de zinnen en leerlingnamen in en opent per leerling nrde file stst<nr>.
De functie stat2leest de geopende file en schrijft naar stat2<nr>.txt en naar plot<nr>.txt. De
gegevens die per trial uit storefile gebruikt worden, zijn : tijd, zinnummer en beoordeling.
Voor het maken de grafiekjes voor de file plot<nr>.txtwordt gebruik gemaakt van de functie
print_plot. De gebruiker
kan
ook nog bepaalde zinresultaten in grafiekjes vergelijken.
Hiervoor worden de functies nr_sentence en nr_session gebruikt. De functie nr_sentence
vindt het zinsnummer bij een zin-string en de functie nr_session vindt het ( volg)nummer van
een sessie bij een gegeven datum.Verder worden nog de functies mean en deviation
gebruikt om gemiddelden en deviaties uit te rekenen en de functie
end
om de gebruiker de
mogelijkeid te geven tussentijds te stoppen.
4.10
Tabel
Het programma
tabel.cproduceert voor iedere leerling met nummer nruit store<nr>,
names.txt, label.txt en sents.txt een een zest.al tabellen. Deze tabellen zijn in de directory
tabel te vinden onder de naam T<tnr>P<nr>.txt, waarbij
tnr,het tabelnummer, loopt van 1
tot
6.
In de functie main worden de leerlingnamen, zinnen en labels ingeladen. Verder
wordt zes keer de functie
make
aangeroepen. Deze functie zorgt ervoor dat een tabel voor
elke leerling gemaakt wordt. Hiervoor worden voor elke leerling de functies
load,
sort en
tabel aangeroepen.
/
De functie
load
laadt de relevante trial-gegevens in een globaal array
tin.
Dit zijn in ieder
geval de beoordelingen en verder twee van de volgende drie soorten gegevens: de
zinnummers, de labelnummers en de datums (berekend uit het time veld met de
standaardfunctie unixtodos). Welke gegevens er per trial ingeladen worden hangt
af
van de
parameters (ofwel: van de tabel). Het array twordt met
de
functie son
gesorteerd.
33
Ten slotte wordt met de functie
tabel
het array
af
gelopen waarbij steeds twee gemiddelden
en twee deviaties bijgehouden warden. 'Iijdens het doorlopen van het array wordt al naar
de
bij de tabel horende
T<tnr>P<nr'>file geschreven.
4.11
C.Onllm
In
de file
coolim.h
zijn de constanten te vinden die bovengrenzen vormen voor de
hoeveelheid infonnatie die het systeem aankan. Verder is hier ook het veel gebruikte
structure trial te vinden.
4.12
C.OnUm2
De file
cooHm2.b
isidentiek aan
coolim.h
op de waarden van de constanten na. De file
cooli.m2.h
wordt gebruikt door het programma
tabel.
Alle andere programma's gebruiken
coolim.b.
4.13
Load
In