%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %% %% Centre for Speech Technology Research %% %% University of Edinburgh, UK %% %% Copyright (c) 1996,1997 %% %% All Rights Reserved. %% %% %% %% Permission is hereby granted, free of charge, to use and distribute %% %% this software and its documentation without restriction, including %% %% without limitation the rights to use, copy, modify, merge, publish, %% %% distribute, sublicense, and/or sell copies of this work, and to %% %% permit persons to whom this work is furnished to do so, subject to %% %% the following conditions: %% %% 1. The code must retain the above copyright notice, this list of %% %% conditions and the following disclaimer. %% %% 2. Any modifications must be clearly marked as such. %% %% 3. Original authors' names are not deleted. %% %% 4. The authors' names are not used to endorse or promote products %% %% derived from this software without specific prior written %% %% permission. %% %% %% %% THE UNIVERSITY OF EDINBURGH AND THE CONTRIBUTORS TO THIS WORK %% %% DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING %% %% ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT %% %% SHALL THE UNIVERSITY OF EDINBURGH NOR THE CONTRIBUTORS BE LIABLE %% %% FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES %% %% WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN %% %% AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, %% %% ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF %% %% THIS SOFTWARE. %% %% %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %% A reference card for Festival with the standard commands %% \documentstyle{article} %\setlength{\textwidth}{9in} \setlength{\textwidth}{380pt} \setlength{\textheight}{7.0in} \setlength{\topmargin}{-1.0in} \setlength{\oddsidemargin}{-0.9in} %% Thanks to lso8219@cs.rit.edu (Loren S Osborn) for the sizes % For A4 % 3.6in % For letter sized 242pt \def\excode#1{\mbox{\hspace{0.25in}{\small #1}}\\ } \def\excodett#1{\mbox{\hspace{0.25in}{\small \tt #1}}\\ } \def\explain#1{\mbox{\hspace{0.1in}{\it #1 }}\\} \def\maintitle#1{{\bf #1} \\} \def\weebreak{\hspace{1in}\\} \pagestyle{empty} \begin{document} \begin{tabular}{ccc} \begin{minipage}{3.6in} % page 1 col 1 \begin{center} {\bf The Festival Speech Synthesis System 1.4} {\bf Reference Card} \end{center} \maintitle{Festival on-line manual:} {\small \tt http://www.cstr.ed.ac.uk/projects/festival/manual/} \explain{If Netscape is running, in command interpreter} \excodett{(manual nil)} \hspace{1in}\\ \maintitle{Making it talk:} \excodett{festival --tts file.text} \excodett{echo "hello" | festival --tts} \hspace{1in}\\ \maintitle{Command line interpreter} \explain{If editline interface is supported, {\tt C-} denotes} \explain{control key, {\tt M-} denotes meta key (diamond} \mbox{\hspace{0.1in}{\it or maybe alt)}} \begin{tabbing} abc \= C-xxxx \= explain \kill \> {\tt \small C-c} \> {\small \it stop and return to top-level}\\ \> {\tt \small C-d} {\small \it or \tt (quit)} \\ \> \> {\small \it Exit Festival}\\ \> {\tt \small TAB} \> {\small \it symbol, function or file completion}\\ \> {\tt \small C-p} {\small \it or up-arrow} \\ \> \> {\small \it previous command}\\ \> {\tt \small C-r} \> {\small \it backwards search command}\\ \> {\tt \small M-h} \> {\small \it print help on current symbol}\\ \> {\tt \small M-s} \> {\small \it say help on current symbol}\\ \> {\tt \small M-m} \> {\small goto appropriate manual page}\\ \> \> {\small \it (requires Netscape to be running)} \end{tabbing} \explain{Emacs keys may be used for editing command line} \weebreak \maintitle{Scheme commands: speech} \explain{Say some string of text} \excode{{\tt (SayText "}{\it text ...}{\tt ")}} \explain{Say the contents of {\tt file.text}} \excodett{(tts "file.text" nil)} \maintitle{Voices} \explain{Select voice through {\tt voice\_*} functions e.g.} \excodett{(voice\_rab\_diphone)} \excodett{(voice\_don\_diphone)} \excodett{(voice\_ked\_diphone)} \end{minipage} & \begin{minipage}{3.6in} % page 1 col 2 \maintitle{Scheme commands: general} \explain{Setting a variable} \excodett{(set! a 'fred) ; comment} \excodett{(set! b '(b c d)} \excodett{(set! sum (+ 2 3 4)} \explain{Lists} \excodett{festival> (set! x '(a b c))} \excodett{(a b c)} \excodett{festival> (set! y '(d e f))} \excodett{(d e f)} \excodett{festival> (append x y)} \excodett{(a b c d e f)} \excodett{festival> (car x)} \excodett{a} \excodett{festival> (cdr x)} \excodett{(b c)} \excodett{festival> (cons 'm x)} \excodett{(m a b c)} \explain{Functions} \excodett{(define plus (a b) (+ a b))} \excodett{festival> (plus 3 4)} \excodett{7} \excodett{festival> (plus 3 (plus 2 4))} \excodett{9} \explain{Printing} \excodett{(pprint '(a b c))} \excode{$\rightarrow$ {\tt (a b c)}} \excode{{\tt (format t "Total \%2.3f} \% {\tt n" 3.12345)}} \excode{$\rightarrow$ 3.123} \explain{Others} \excodett{(load "fred.scm")} \excodett{(if (string-equal name "fred")} \excode{\mbox{\hspace{0.1in}{\tt (pprint "is fred")}}} \excode{\mbox{\hspace{0.1in}{\tt (pprint "is not fred"))}}} \end{minipage} & \begin{minipage}{3.6in} % page 1 col 3 \maintitle{Text modes} \explain{Second argument to {\tt tts} is {\it MODE}} \explain{{\it MODE} may be {\tt nil}, {\tt email}, {\tt sable} e.g.} \excodett{ (tts "file.sable" stml)} \explain{If {\it MODE} is {\tt nil} use auto-mode} \explain{To set all files ending in {\tt .ogi} to be} \explain{synthesized in {\tt ogi} mode} \excodett{(set! auto-text-mode-alist} \excode{\mbox{\hspace{0.1in}{\tt (cons (cons "\\.ogi\$" 'ogi)}}} \excode{\mbox{\hspace{0.2in}{\tt auto-text-mode-alist))}}} \maintitle{Lexicon} \explain{Adding new lexical entry} \excodett{(lex.add\_entry "email"} \excode{\mbox{\hspace{0.1in}{\tt ("email" n (((ii) 1) ((m ei l) 0))))}}} \explain{Check similar words for pronunciation} \excodett{(lex.lookup "mail")} \explain{Add new personal entries in {\tt .festivalrc}} \explain{first select the voice then call {\tt lex.add\_entry}} \maintitle{Audio} \explain{Audio should be setup at installation} \explain{NAS (network audio server) multi-platform} \excodett{(Parameter.set 'Audio\_Method 'netaudio)} \explain{8bit ulaw {\tt /dev/audio} (Sun, FreeBSD, Linux)} \excodett{(Parameter.set 'Audio\_Method 'sunaudio)} \explain{Sun/FreeBSD/Linux 16 linear (compile-time options)} \excodett{(Parameter.set 'Audio\_Method 'sun16audio)} \excodett{(Parameter.set 'Audio\_Method 'freebsd16audio)} \excodett{(Parameter.set 'Audio\_Method 'linux16audio)} \explain{Arbitrary command, will execute given command} \explain{on waveform. {\tt \$FILE} and {\tt \$SR} will be set} \excodett{(Parameter.set 'Audio\_Method 'Audio\_Command)} \excodett{(Parameter.set 'Audio\_Command} \excode{\mbox{\hspace{0.3in}{\tt "adplay -raw -rate \$SR \$FILE")}}} \explain{Default for command is unheadered, shorts (native)} \explain{You can change format and sample rate with} \excodett{(Parameter.set 'Audio\_Required\_Rate 8000)} \excodett{(Parameter.set 'Audio\_Required\_Fromat 'riff)} \explain{formats include: {\tt riff, aiff, nist, snd, esps}} \end{minipage} \end{tabular} \begin{tabular}{ccc} \begin{minipage}{3.6in} % page 2 col 1 \maintitle{Utterances} \explain{Making utterances} \excode{{\tt (Utterance }{\it TYPE} {\it DATA}{\tt)}} \explain{{\it TYPE}s include: {\tt Text} {\tt Phones} {\tt Wave} e.g.} \excodett{(Utterance Text "Hello world.")} \excodett{(Utterance Phones (h @ l ou))} \excodett{(Utterance Wave "sc001.wav")} \explain{Synthesize (modules based on TYPE)} \excode{{\tt (utt.synth }{\it UTT}{\tt)}} \explain{Send waveform to audio device} \excode{{\tt (utt.play }{\it UTT}{\tt)}} \explain{An example} \excodett{(set! utt1 (Utterance "Hello world."))} \excodett{(utt.play (utt.synth utt1))} \maintitle{Accessing items and features} \explain{returns list of ITEMs} \excode{{\tt (utt.relation.items }{\it UTT RELATIONNAME}{\tt )}} \explain{Item feature access functions} \excode{{\tt (item.feat }{\it ITEM FEATNAME}{\tt )}} \excode{{\tt (item.name }{\it ITEM}{\tt )}} \excode{{\tt (item.next }{\it ITEM}{\tt )}} \excode{{\tt (item.prev }{\it ITEM}{\tt )}} \excode{{\tt (item.set\_feat }{\it ITEM FEATNAME VAL}{\tt )}} \excode{{\tt (item.relation }{\it ITEM RELATIONNAME}{\tt )}} \maintitle{Item features} \explain{Assume {\tt utt} is utterance, {\tt item} is item} \explain{returns item's name} \excodett{(item.feat item "name")} \explain{returns item's next's name} \excodett{(item.feat item "n.name")} \explain{returns item's previous's name} \excodett{(item.feat item "p.name")} \explain{name of word related to Syllable item} \excodett{(item.feat item "R:SylStructure.parent.name")} \explain{name of next word of word related to syllable} \excodett{(item.feat item "R:SylStructure.parent.R:Word.n.name")} \explain{name of word related to next syllable} \excodett{(item.feat item "n.R:SylStructure.parent.name")} \maintitle{Multi-features} \explain{Return all features of items in relation} \excodett{(utt.features utt 'Syllable } \excode{\mbox{\hspace{0.1in}{\tt '(duration stress n.name))}}} \explain{See manual for builtin feature names} \end{minipage} & \begin{minipage}{3.6in} % page 2 col 2 \maintitle{Regex matching} \begin{tabbing} C-xxxx \= explain \kill {\tt \small .} \> {\small \it matches any character}\\ {\tt \small {\it X}*} \> {\small \it zero or more Xs}\\ {\tt \small {\it X}+} \> {\small \it one or more Xs}\\ {\tt \small {\it X}?} \> {\small \it zero or one Xs}\\ {\tt \small [abc]} \> {\small \it range, matching a,b or c}\\ {\tt \small [A-Z]} \> {\small \it range, matching all caps}\\ {\tt \small \verb+[^A-Z]+} \> {\small \it range, matching all but caps}\\ {\tt \small \verb+\\(XY\\)+} \\ \> {\small \it group X and Y}\\ {\tt \small \verb+X\\|Y+} \> {\small \it match X or Y} \end{tabbing} \explain{For example} \begin{tabbing} C-xxxx \= explain \kill {\tt \small ".*a.*"} \> {\small \it matches all strings containing a}\\ {\tt \small "a.*"} \> {\small \it all strings starting with a}\\ {\tt \small "[A-Z].*"} \> {\small \it all strings starting with a capital}\\ {\tt \small "[0-9]+"} \> {\small \it all strings of digits}\\ {\tt \small "\verb.-?[0-9]+\\(\\..\verb.[0-9]+\\)?."} \\ \> {\small \it any real number}\\ {\tt \small "\verb.[^aeiouAEIOU]+."} \> \\ \> {\small \it any string with no vowels}\\ {\tt \small "\verb.\\(Saturday\\)\\|\\(Sunday\\)."} \\ \> {\small \it Saturday or Sunday} \end{tabbing} \maintitle{String functions} \explain{returns suffix of STR1 after STR2} \excode{{\tt (string-after }{\it STR1 STR2}{\tt )}} \explain{returns prefix of STR1 before STR2} \excode{{\tt (string-before }{\it STR1 STR2}{\tt )}} \explain{returns t if STR matches REGEX or nil} \excode{{\tt (string-matches }{\it STR REGEX}{\tt )}} \explain{returns t if STR1 equals STR2} \excode{{\tt (string-equal }{\it STR1 STR2}{\tt )}} \explain{returns non-nil if STR is in LIST} \excode{{\tt (member\_string }{\it STR LIST}{\tt )}} \end{minipage} & \begin{minipage}{3.6in} % page 2 col 3 \maintitle{Miscellaneous} \explain{List all (potentional) voices} \excodett{(voice.list)} \explain{Return description of voice NAME} \excode{{\tt (voice.description }{\it NAME}{\tt )}} \explain{Speak description of voice NAME} \excode{{\tt (voice.describe }{\it NAME}{\tt )}} \explain{List all defined lexicons} \excode{{\tt (lex.list)}} \explain{List all defined phonesets} \excode{{\tt (PhoneSet.list)}} \explain{Describe current PhoneSet} \excode{{\tt (PhoneSet.description)}} \maintitle{More information} \explain{More information of Festival is available from} \excodett{http://www.cstr.ed.ac.uk/projects/festival.html} \explain{Or by mailing} \excodett{festival-help@cstr.ed.ac.uk} \hspace{1in}\\ \hspace{1in}\\ \hspace{1in}\\ \hspace{1in}\\ \hspace{1in}\\ \hspace{1in}\\ \hspace{1in}\\ \hspace{1in}\\ \maintitle{Copyright} \explain{(C) University of Edinburgh 1996-1999.} \explain{All rights reserved} \hspace{1in}\\ \explain{{\small Festival is free software and may be}} \explain{{\small used commercially or otherwise without}} \explain{{\small further permission.}} \end{minipage} \end{tabular} \end{document}