#compdef espeak local curcontext="$curcontext" state line expl ret=1 typeset -A opt_args _arguments -C \ '(1 --stdin)-f+[specify file to speak]:text file:_files' \ '(1 -f)--stdin[speak from stdin]' \ '(-q)-a+[specify amplitude]:amplitude (0-200) [100]' \ '(-q)-g+[specify pause between words]:pause (10ms) [1]' \ '-k[capital letter indication]:integer:((1\:sound 2\:the\ word\ "capitals"))' \ '-l[specify line length below which clause is ended]:length' \ '(-q)-p+[specify pitch adjustment]:adjustment (0-99)' \ '(-q)-s+[specify speed]:speed (words per minute) [175]' \ '(-q)-v+[voice]:voice name:->voices' \ '(--stdout -q)-w+[write speech to wav file]:wav file:_files -g "*.wav(-.)"' \ '-b+[specify input encoding]:encoding:((1\:UTF-8 2\:8-bit 3\:16-bit))' \ '-m[interpret SSML markup, ignore other XML]' \ '(-a -g -p -s -v -w -z --split --stdout)-q[quiet, no sound output]' \ '(-x --ipa)-x[output phoneme mnemonics]' \ '(-X --ipa)-X[output phoneme mnemonics and translation trace]' \ '(-q)-z[suppress final sentence pause at the end of the text]' \ '--compile=-[compile pronunciation rules and dictionary]::voicename or debug' \ '(-x -X)--ipa=-[output phonemes using International Phonetic Alphabet]::options:((1\:use\ ties 2\:use\ ZWJ 3\:separate\ with\ _))' \ '--path=[specify espeak-data path]:path:_files -/' \ '--pho[output mbrola phoneme data]' \ '--phonout=[output filename for -x/-X/--ipa]:filename:_files' \ '--punct=-[speak names of punctuation characters]::characters' \ '(-q --stdout)--split=[periodically start new wav file]:period (minutes)' \ '(-w -q --split)--stdout[output speech to stdout]' \ '--voices=-[list available voices]::language code:->languages' \ '(-)'{-h,--help}'[display help information]' \ '(-)--version[display version information]' && ret=0 case $state in voices) _wanted voices expl voice compadd \ ${${${(f)"$(_call_program voices $words[1] --voices)"}[2,-1]#?(#c22)}%% *} && ret=0 ;; languages) _wanted languages expl language compadd \ ${${${(f)"$(_call_program voices $words[1] --voices)"}[2,-1]#?(#c4)}%% *} && ret=0 ;; esac return ret