HTK Tutorial. Giampiero Salvi



Similar documents
Hidden Markov Model Toolkit (HTK) - Quick Start by David Philippou-Hübner

AUTOMATIC PHONEME SEGMENTATION WITH RELAXED TEXTUAL CONSTRAINTS

Hardware Implementation of Probabilistic State Machine for Word Recognition

Advanced Signal Processing and Digital Noise Reduction

Tutorial 0A Programming on the command line

Turkish Radiology Dictation System

Membering T M : A Conference Call Service with Speaker-Independent Name Dialing on AIN

Information Leakage in Encrypted Network Traffic

Lab 1: Introduction to C, ASCII ART and the Linux Command Line Environment

Unix Tools. Overview. Editors. Editors nedit vi Browsers/HTML Editors Mail Tools Utilities xv xman ftp

Speech Technology Project 2004 Building an HMM Speech Recogniser for Dutch

MS Access Lab 2. Topic: Tables

Preservation Handbook

Linux command line. An introduction to the Linux command line for genomics. Susan Fairley

Unix Shell Scripts. Contents. 1 Introduction. Norman Matloff. July 30, Introduction 1. 2 Invoking Shell Scripts 2

ADDING DOCUMENTS TO A PROJECT. Create a a new internal document for the transcript: DOCUMENTS / NEW / NEW TEXT DOCUMENT.

Spot me if you can: Uncovering spoken phrases in encrypted VoIP conversations

Name: Class: Date: 9. The compiler ignores all comments they are there strictly for the convenience of anyone reading the program.

SPRACH - WP 6 & 8: Software engineering work at ICSI

Fred Hantelmann LINUX. Start-up Guide. A self-contained introduction. With 57 Figures. Springer

Using SVN to Manage Source RTL

Carla Simões, Speech Analysis and Transcription Software

Using SVN to Manage Source RTL

Tagging with Hidden Markov Models

Stephen du Toit Mathilda du Toit Gerhard Mels Yan Cheng. LISREL for Windows: PRELIS User s Guide

Backup of ESXi Virtual Machines using Affa

PCM Encoding and Decoding:

Online Diarization of Telephone Conversations

8051 MICROCONTROLLER COURSE

32-Bit Workload Automation 5 for Windows on 64-Bit Windows Systems

USER GUIDE Version 2.0

PDSI Users Manual Version 2.0

Thirty Useful Unix Commands

Unix the Bare Minimum

Speech Recognition System of Arabic Alphabet Based on a Telephony Arabic Corpus

Using Casio Graphics Calculators

Developing speech recognition software for command-and-control applications

Construct User Guide

CBS RECORDS PROFESSIONAL SERIES CBS RECORDS CD-1 STANDARD TEST DISC

1 Basic commands. 2 Terminology. CS61B, Fall 2009 Simple UNIX Commands P. N. Hilfinger

CPSC2800: Linux Hands-on Lab #3 Explore Linux file system and file security. Project 3-1

SPROG DCC Decoder Programmer

VIP Quick Reference Card

grep, awk and sed three VERY useful command-line utilities Matt Probert, Uni of York grep = global regular expression print

================================================================

Calculating Bandwidth Requirements

BLIND SOURCE SEPARATION OF SPEECH AND BACKGROUND MUSIC FOR IMPROVED SPEECH RECOGNITION

Reduce File Size. Compatibility. Contents

Implementation of the Discrete Hidden Markov Model in Max / MSP Environment

Secure-Access System via Fixed and Mobile Telephone Networks using Voice Biometrics

LEVERAGING FPGA AND CPLD DIGITAL LOGIC TO IMPLEMENT ANALOG TO DIGITAL CONVERTERS

Command Line - Part 1

Introduction to Programming System Design. CSCI 455x (4 Units)

Digital To Analog Converter with Sine Wave Output

List of FTP commands for the Microsoft command-line FTP client

Lecture 18 Regular Expressions

G563 Quantitative Paleontology. SQL databases. An introduction. Department of Geological Sciences Indiana University. (c) 2012, P.

Network Security In Linux: Scanning and Hacking

Linux Shell Script To Monitor Ftp Server Connection

Broadband Networks. Prof. Dr. Abhay Karandikar. Electrical Engineering Department. Indian Institute of Technology, Bombay. Lecture - 29.

Introduction to Mac OS X

Repetition Using the End of File Condition

Ericsson T18s Voice Dialing Simulator

Running the shell. Tcl/Tk demo. Tcl stuff. Starting Tcl/Tk. If-then-else

CS Unix Tools & Scripting Lecture 9 Shell Scripting

ECDL. European Computer Driving Licence. Spreadsheet Software BCS ITQ Level 2. Syllabus Version 5.0

SPEECH DATA MINING, SPEECH ANALYTICS, VOICE BIOMETRY. 1/41

LECTURE-7. Introduction to DOS. Introduction to UNIX/LINUX OS. Introduction to Windows. Topics:

3.GETTING STARTED WITH ORACLE8i

Robust Methods for Automatic Transcription and Alignment of Speech Signals

Structural Health Monitoring Tools (SHMTools)

Image Compression through DCT and Huffman Coding Technique

Solutions to Exam in Speech Signal Processing EN2300

2.3 Identify rrna sequences in DNA

1. Stem. Configuration and Use of Stem

A UNIX/Linux in a nutshell

Simple Voice over IP (VoIP) Implementation

User Guide. VT1708A VIA HD Audio Adeck For Windows 2000, Windows XP & Server Jun Revision 1.1e

A Crash Course on UNIX

Artificial Neural Network for Speech Recognition

ECDL / ICDL Word Processing Syllabus Version 5.0

ICS 351: Today's plan

A Short Introduction to Transcribing with ELAN. Ingrid Rosenfelder Linguistics Lab University of Pennsylvania

Mbox Basics Guide. Version 6.7 for LE Systems on Windows XP or Mac OS X. Digidesign

PHY-2464 Physical Basis of Music

Introduction to Git. Markus Kötter Notes. Leinelab Workshop July 28, 2015

Answers to Even-numbered Exercises

Basic C Shell. helpdesk@stat.rice.edu. 11th August 2003

E-Blocks Easy RFID Bundle

USB Recorder. User s Guide. Sold by: Toll Free: (877)

Abstract. Avaya Solution & Interoperability Test Lab

what operations can it perform? how does it perform them? on what kind of data? where are instructions and data stored?

Machine Learning with MATLAB David Willingham Application Engineer

itunes 4.2 User Guide for Windows Apple Computer, Inc.

Soundcraft Signature MTK Recording Guide

Transcription:

Giampiero Salvi KTH (Royal Institute of Technology), Dep. of Speech, Music and Hearing, Drottning Kristinas v. 31, SE-100 44, Stockholm, Sweden giampi@speech.kth.se Giampiero Salvi, Nov. 2003 1/36

Outline Introduction Data formats and manipulation Data visualization Training Recognition Giampiero Salvi, Nov. 2003 2/36

Introduction What is it? toolkit for Hidden Markov Modeling general purpose, but... optimized for Speech Recognition very flexible and complete (always updated) very good documentation Giampiero Salvi, Nov. 2003 3/36

Introduction ASR overview Training audio feature extraction prototype HMM features labels training model set Recognition audio feature extraction dictionary model set features grammar decoding labels dictionary Giampiero Salvi, Nov. 2003 4/36

Introduction things that you should have before you start familiarity with Unix-like shell cd, ls, pwd, mkdir, cp, foreach... text processing tools: perl, perl, perl, perl, perl grep, gawk, tr, sed, find, cat, wc... lots of patience the fabulous HTK Book a look at the RefRec scripts Giampiero Salvi, Nov. 2003 5/36

Introduction the HTK tools data manipulation tools: HCopy HQuant HLEd HHEd HDMan HBuild data visualization tools: HSLab HList HSGen training tools: HCompV HInit HRest HERest HEAdapt HSmooth recognition tools: HLStats HParse HVite HResults Giampiero Salvi, Nov. 2003 6/36

Introduction the HTK data formats data formats: audio: features: many common formats plus HTK HTK binary binary labels: HTK (single or Master Label files) text models: other: HTK (single or Master Macro files) HTK text or binary text audio feature extraction prototype HMM features labels dictionary training model set model set audio feature extraction features grammar decoding labels dictionary Giampiero Salvi, Nov. 2003 7/36

> HList Introduction usage example (HList) USAGE: HList [options] file... Option Default -d Coerce observation to VQ symbols off -e N End at sample N 0 -h Print source header info off -i N Set items per line to N 10 -n N Set num streams to N 1 -o Print observation structure off -p Playback audio off -r Write raw output off -s N Start at sample N 0 -t Print target header info off -z Suppress printing data on -A Print command line arguments off -C cf Set config file to cf default -D Display configuration variables off... Giampiero Salvi, Nov. 2003 8/36

Introduction command line switches and options > HList -e 1 -o -h feature_file Source: feature_file Sample Bytes: 26 Sample Kind: MFCC_0 Num Comps: 13 Sample Period: 10000.0 us Num Samples: 336 File Format: HTK -------------------- Observation Structure --------------------- x: MFCC-1 MFCC-2 MFCC-3 MFCC-4 MFCC-5 MFCC-6 MFCC-7 MFCC-8 MFCC-9 MFCC-10 MFCC-11 MFCC-12 C0 ------------------------ Samples: 0->1 ------------------------- 0: -14.314-3.318-6.263-7.245 7.192 4.997 0.830 3.293 5.428 6.831 5.819 5.606 40.734 1: -13.591-4.756-6.037-3.362 3.541 3.510 2.867 0.812 0.630 5.285 1.054 8.375 40.778 ----------------------------- END ------------------------------ Giampiero Salvi, Nov. 2003 9/36

Introduction configuration file > cat config_file SOURCEKIND = MFCC_0 TARGETKIND = MFCC_0_D_A > HList -C config_file -e 0 -o -h feature_file Source: feature_file Sample Bytes: 26 Sample Kind: MFCC_0 Num Comps: 13 Sample Period: 10000.0 us Num Samples: 336 File Format: HTK -------------------- Observation Structure --------------------- x: MFCC-1 MFCC-2 MFCC-3 MFCC-4 MFCC-5 MFCC-6 MFCC-7 MFCC-8 MFCC-9 MFCC-10 MFCC-11 MFCC-12 C0 Del-1 Del-2 Del-3 Del-4 Del-5 Del-6 Del-7 Del-8 Del-9 Del-10 Del-11 Del-12 DelC0 Acc-1 Acc-2 Acc-3 Acc-4 Acc-5 Acc-6 Acc-7 Acc-8 Acc-9 Acc-10 Acc-11 Acc-12 AccC0 ------------------------ Samples: 0->1 ------------------------- 0: -14.314-3.318-6.263-7.245 7.192 4.997 0.830 3.293 5.428 6.831 5.819 5.606 40.734-0.107-0.180 0.731 1.134-0.723-0.676 1.083-0.552-0.387-0.592-2.172-0.030-0.170 0.236 0.170-0.241-0.226-0.517-0.244-0.053 0.213-0.029 0.097 0.225-0.294 0.051 ----------------------------- END ------------------------------ Giampiero Salvi, Nov. 2003 10/36

Data formats and manipulation file manipulation tools HCopy: converts from/to various data formats (audio, features). HQuant: quantizes speech (audio). HLEd: edits label and master label files. HDMan: edits dictionary files. HHEd: edits model and master macro files. HBuild: converts language models in different formats (more in recognition section). Giampiero Salvi, Nov. 2003 11/36

Data formats and manipulation > cat config_file computing feature files (HCopy) # Feature configuration TARGETKIND = MFCC_0 TARGETRATE = 100000.0 SAVECOMPRESSED = T SAVEWITHCRC = T WINDOWSIZE = 250000.0 USEHAMMING = T PREEMCOEF = 0.97 NUMCHANS = 26 CEPLIFTER = 22 NUMCEPS = 12 ENORMALISE = F # input file format (headerless 8 khz 16 bit linear PCM) SOURCEKIND = WAVEFORM SOURCEFORMAT = NOHEAD SOURCERATE = 1250 > HCopy -C config_file audio_file1 param_file1 audio_file2... > HCopy -C config_file -S file_list Giampiero Salvi, Nov. 2003 12/36

Data formats and manipulation label files #!MLF!# "filename1" [start1 [end1]] label1 [score] {auxlabel [auxscore]} [comment] [start2 [end2]]... label2 [score] {auxlabel [auxscore]} [comment] [startn [endn]] labeln [score] {auxlabel [auxscore]} [comment]. "filename2".... [.] = optional (0 or 1); {.} = possible repetition (0, 1, 2...) time stamps are in 100ns units (!?): 10ms = 100.000 Giampiero Salvi, Nov. 2003 13/36

Data formats and manipulation > cat aligned.mlf #!MLF!# "*/a10001a1.rec" 0 6400000 sil <sil> 6400000 8600000 f förra 8600000 10400000 oe 10400000 11700000 r 11700000 14100000 a 14100000 14100000 sp 14100000 29800001 sil <sil>. "*/a10001i1.rec" 0 2600000 sil <sil> 2600000 4900000 S sju 4900000 8300000 uh: 8300000 8600000 a 8600000 8600000 sp 8600000 21600000 sil <sil>. label file example 1 Giampiero Salvi, Nov. 2003 14/36

Data formats and manipulation label file example 2 (HLEd) > HLEd -l * -d lex.dic -i phones.mlf words2phones.led words.mlf > cat words.mlf #!MLF!# "*/a10001a1.rec" förra. "*/a10001i1.rec" sju. > cat words2phones.led EX IS sil sil > cat phones.mlf #!MLF!# "*/a10001a1.rec" sil f oe r a sp sil. "*/a10001i1.rec" sil S uh: a sp sil. Giampiero Salvi, Nov. 2003 15/36

Data formats and manipulation dictionary (HDMan) WORD [OUTSYM] PRONPROB P1 P2 P3 P4... > cat lex.dic förra f oe r a sp sju S uh: a sp > cat lex2.dic <sil> [] sil förra f oe r a sp sju 0.3 S uh: a sp sju 0.7 S uh: sp Giampiero Salvi, Nov. 2003 16/36

Data formats and manipulation HMM definition files (HHEd) 1/5 ~h "hmm_name" <BEGINHMM> <NUMSTATES> 5 <STATE> 2 <NUMMIXES> 2 <MIXTURE> 1 0.8 <MEAN> 4 0.1 0.0 0.7 0.3 <VARIANCE> 4 0.2 0.1 0.1 0.1 <MIXTURE> 2 0.2 <MEAN> 4 0.2 0.3 0.4 0.0 <VARIANCE> 4 0.1 0.1 0.1 0.2 <STATE> 3 ~s "state_name" <STATE> 4 <NUMMIXES> 2 <MIXTURE> 1 0.7 ~m "mix_name" <MIXTURE> 2 0.3 <MEAN> 4 ~u "mean_name" <VARIANCE> 4 ~v "variance_name" <TRANSP> ~t "transition_name" <ENDHMM> HMM definition (~h) 1 2 3 4 5 Giampiero Salvi, Nov. 2003 17/36

Data formats and manipulation HMM definition files (HHEd) 2/5 ~h "hmm_name" <BEGINHMM> <NUMSTATES> 5 <STATE> 2 <NUMMIXES> 2 <MIXTURE> 1 0.8 <MEAN> 4 0.1 0.0 0.7 0.3 <VARIANCE> 4 0.2 0.1 0.1 0.1 <MIXTURE> 2 0.2 <MEAN> 4 0.2 0.3 0.4 0.0 <VARIANCE> 4 0.1 0.1 0.1 0.2 <STATE> 3 ~s "state_name" <STATE> 4 <NUMMIXES> 2 <MIXTURE> 1 0.7 ~m "mix_name" <MIXTURE> 2 0.3 <MEAN> 4 ~u "mean_name" <VARIANCE> 4 ~v "variance_name" <TRANSP> ~t "transition_name" <ENDHMM> State definition (~s) 1 2 3 4 5 Giampiero Salvi, Nov. 2003 18/36

Data formats and manipulation HMM definition files (HHEd) 3/5 ~h "hmm_name" <BEGINHMM> <NUMSTATES> 5 <STATE> 2 <NUMMIXES> 2 <MIXTURE> 1 0.8 <MEAN> 4 0.1 0.0 0.7 0.3 <VARIANCE> 4 0.2 0.1 0.1 0.1 <MIXTURE> 2 0.2 <MEAN> 4 0.2 0.3 0.4 0.0 <VARIANCE> 4 0.1 0.1 0.1 0.2 <STATE> 3 ~s "state_name" <STATE> 4 <NUMMIXES> 2 <MIXTURE> 1 0.7 ~m "mix_name" <MIXTURE> 2 0.3 <MEAN> 4 ~u "mean_name" <VARIANCE> 4 ~v "variance_name" <TRANSP> ~t "transition_name" <ENDHMM> Gaussian mixture component definition (~m) 1 2 3 4 5 Giampiero Salvi, Nov. 2003 19/36

Data formats and manipulation HMM definition files (HHEd) 4/5 ~h "hmm_name" <BEGINHMM> <NUMSTATES> 5 <STATE> 2 <NUMMIXES> 2 <MIXTURE> 1 0.8 <MEAN> 4 0.1 0.0 0.7 0.3 <VARIANCE> 4 0.2 0.1 0.1 0.1 <MIXTURE> 2 0.2 <MEAN> 4 0.2 0.3 0.4 0.0 <VARIANCE> 4 0.1 0.1 0.1 0.2 <STATE> 3 ~s "state_name" <STATE> 4 <NUMMIXES> 2 <MIXTURE> 1 0.7 ~m "mix_name" <MIXTURE> 2 0.3 <MEAN> 4 ~u "mean_name" <VARIANCE> 4 ~v "variance_name" <TRANSP> ~t "transition_name" <ENDHMM> Mean vector definition (~u) Diagonal variance vector definition (~v) 1 2 3 4 5 Giampiero Salvi, Nov. 2003 20/36

Data formats and manipulation ~h "hmm_name" <BEGINHMM> <NUMSTATES> 5 <STATE> 2 <NUMMIXES> 2 <MIXTURE> 1 0.8 <MEAN> 4 0.1 0.0 0.7 0.3 <VARIANCE> 4 0.2 0.1 0.1 0.1 <MIXTURE> 2 0.2 <MEAN> 4 0.2 0.3 0.4 0.0 <VARIANCE> 4 0.1 0.1 0.1 0.2 <STATE> 3 ~s "state_name" <STATE> 4 <NUMMIXES> 2 <MIXTURE> 1 0.7 ~m "mix_name" <MIXTURE> 2 0.3 <MEAN> 4 ~u "mean_name" <VARIANCE> 4 ~v "variance_name" <TRANSP> ~t "transition_name" <ENDHMM> HMM definition files (HHEd) 5/5 Transition matrix definition (~t) 1 2 3 4 5 Giampiero Salvi, Nov. 2003 21/36

Data visualization HSLab: graphical tool to label speech (use WaveSurfer instead). HList: gives information about audio and feature files. HSGen: generates random sentences out of a regular grammar. Giampiero Salvi, Nov. 2003 22/36

Intermezzo what do we know so far? Training audio feature extraction prototype HMM features labels training model set Recognition audio feature extraction dictionary model set features grammar decoding labels dictionary Giampiero Salvi, Nov. 2003 23/36

Traning tools model initialization Initialization procedure depends on the information avaliable at that time. HCompV: computes the overall mean and variance. Input: a prototype HMM. HInit: Viterbi segmentation + parameter estimation. For mixture distribution uses K-means. Input: a prototype HMM, time aligned transcriptions. Giampiero Salvi, Nov. 2003 24/36

Traning tools training and adaptation HRest: Baum-Welch re-estimation. Input: an initialized model set, time aligned transcriptions. HERest: performs embedded Baum-Welch training. Input: an initialized model set, timeless transcriptions. HEAdapt: performs adaptation on a limited set of data. HSmooth: smoots a set of context-dependent models according to the context-independent counterpart. Giampiero Salvi, Nov. 2003 25/36

Traning tools training example: RefRec first pass: prototype HMM HCompV cloning HERest realignment (HVite) HERest increase MC (HHEd) HERest realignment (HVite) second pass: prototype HMM + aligned transcriptions HInit HRest HERest increase MC (HHEd) HERest Giampiero Salvi, Nov. 2003 26/36

Recognition tools grammar generation HLStats: creates bigram from training data. HParse: parses a user defined grammar to produce a lattice. decoding HVite: performs Viterbi decoding. evaluation HResults: evaluates recognition results. Giampiero Salvi, Nov. 2003 27/36

Recognition tools grammar definition (HParse) up move down left right top sil bottom sil sil fil char fil quit fil spk delete word line spk spk page insert end insert Giampiero Salvi, Nov. 2003 28/36

Recognition tools grammar definition (HParse) > cat grammar.bnf $dir = up down left right; $mcmd = move $dir top bottom; $item = char word line page; $dcmd = delete [$item]; $icmd = insert; $ecmd = end [insert]; $cmd = $mcmd $dcmd $icmd $ecmd; $noise = sil fil spk; ({$noise} < $cmd {$noise} > quit {$noise}) [.] optional {.} zero or more (.) block <.> loop <<.>> context dep. loop.. alternative Giampiero Salvi, Nov. 2003 29/36

Recognition tools grammar definition (HParse) > cat grammar.bnf $dir = up down left right; $mcmd = move $dir top bottom; $item = char word line page; $dcmd = delete [$item]; $icmd = insert; $ecmd = end [insert]; $cmd = $mcmd $dcmd $icmd $ecmd; $noise = sil fil spk; ({$noise} < $cmd {$noise} > quit {$noise}) [.] optional {.} zero or more (.) block <.> loop <<.>> context dep. loop.. alternative move top bottom up down left right Giampiero Salvi, Nov. 2003 30/36

Recognition tools grammar definition (HParse) > cat grammar.bnf $dir = up down left right; $mcmd = move $dir top bottom; $item = char word line page; $dcmd = delete [$item]; $icmd = insert; $ecmd = end [insert]; $cmd = $mcmd $dcmd $icmd $ecmd; $noise = sil fil spk; ({$noise} < $cmd {$noise} > quit {$noise}) [.] optional {.} zero or more (.) block <.> loop <<.>> context dep. loop.. alternative delete char word line page Giampiero Salvi, Nov. 2003 31/36

Recognition tools grammar definition (HParse) > cat grammar.bnf $dir = up down left right; $mcmd = move $dir top bottom; $item = char word line page; $dcmd = delete [$item]; $icmd = insert; $ecmd = end [insert]; $cmd = $mcmd $dcmd $icmd $ecmd; $noise = sil fil spk; ({$noise} < $cmd {$noise} > quit {$noise}) [.] optional {.} zero or more (.) block <.> loop <<.>> context dep. loop.. alternative insert end insert Giampiero Salvi, Nov. 2003 32/36

Recognition tools grammar definition (HParse) > cat grammar.bnf $dir = up down left right; $mcmd = move $dir top bottom; $item = char word line page; $dcmd = delete [$item]; $icmd = insert; $ecmd = end [insert]; $cmd = $mcmd $dcmd $icmd $ecmd; $noise = sil fil spk; ({$noise} < $cmd {$noise} > quit {$noise}) [.] optional {.} zero or more (.) block <.> loop <<.>> context dep. loop.. alternative sil fil spk Giampiero Salvi, Nov. 2003 33/36

Recognition tools grammar definition (HParse) > cat grammar.bnf $dir = up down left right; $mcmd = move $dir top bottom; $item = char word line page; $dcmd = delete [$item]; $icmd = insert; $ecmd = end [insert]; $cmd = $mcmd $dcmd $icmd $ecmd; $noise = sil fil spk; ( {$noise} < $cmd {$noise} > quit {$noise}) [.] optional {.} zero or more (.) block <.> loop <<.>> context dep. loop.. alternative sil fil spk Giampiero Salvi, Nov. 2003 34/36

Recognition tools grammar parsing (HParse) and recognition (HVite) Parse grammar > HParse grammar.bnf grammar.slf Run recognition on file(s) > HVite -C offline.cfg -H mono_32_2.mmf -w grammar.slf -y lab dict.txt phones.lis audio_file.wav Run recognition live > HVite -C live.cfg -H mono_32_2.mmf -w grammar.slf -y lab dict.txt phones.lis Giampiero Salvi, Nov. 2003 35/36

Recognition tools evaluation (HResults) > HResults -I reference.mlf... word.lst recognized.mlf ====================== HTK Results Analysis ======================= Date: Thu Jan 18 16:17:53 2001 Ref : nworkdir_train/testset.mlf Rec : nresults_train/mono_32_2/rec.mlf ------------------------ Overall Results -------------------------- SENT: %Correct=74.07 [H=994, S=348, N=1342] WORD: %Corr=94.69, Acc=94.37 [H=9202, D=196, S=320, I=31, N=9718] ------------------------------------------------------------------- N = total number, I = insertions, S = substitutions, D = deletions correct: H = N S D %correct: %Corr = H/N accuracy: Acc = H I N = N S D I N Giampiero Salvi, Nov. 2003 36/36