1 2 3<sect> Options 4<p> 5 6Most aspects of the operation can be customized by changing options. 7This can be enforced by TTSCP commands, in configuration files and 8on the command line. Basically, an option is an option name/option value 9pair. There are a few possible option types: number, string, yes/no, 10character, and a few enumerated types. 11 12Almost all individual options are documented in <ref id="indivopts" 13name="this document">. If you strongly suspect this section of 14documentation to be out-of date, the reliable list of all built-in 15long options can be found in <tt>src/options.lst</tt>. (See approximately 16line 320 and below. Every line represents at most one option for every 17option class as explained below. The option name is quoted; its 18semantics is usually explained following the option.) You can also 19list the option names and types using <tt>eposd -H</tt>. 20 21<sect1> Option Classes 22<p> 23 24There are four classes of options: static options, global options, 25language options and voice options. For instance, switching a voice 26in fact means switching to another set of voice options, while the language 27options, global options and static options stay the same. 28 29Every voice is language specific (implies a specific language). 30That's why switching the language automatically switches the voice 31to the voice defined as default or the last active one for this particular language. 32(It is of course possible to use the same configuration file to setup 33a similarly sounding voice for every language if desired.) 34It is also important to distinguish between a voice and an inventory. 35An <em/inventory/ is a set of speaker-dependent files used 36as a base for <em/voice/, that is, a mode of speech. Multiple 37different voices may use the same inventory, and may even sound 38quite different depending on various configuration options. 39A user of moderate expertise will be able to modify the voice dependent 40configuration files, but not the inventory files. Also, the inventories 41may often be distributed externally to Epos, while sample voices 42based on them may either be included with Epos, or with the 43segment inventory, or their creation may be completely left 44to the user. 45 46A set of voice options should completely describe a voice. 47A set of language options should completely describe a language, 48except for voice-specific behavior. A set of global options 49should cover language independent aspects of operation. 50It should be understood that a set of options may employ various 51references to other information, especially filenames (of language 52dependent transcription rules, voice dependent segment inventories 53etc.) 54 55Some language and/or voice specific options may have suitable defaults 56for all but specific languages/voices. That's why there is a corresponding language 57option for every voice option to default to if unspecified for a given 58voice. Likewise, there is a global option for every language option 59to default to. Therefore, adding a new language or voice options 60doesn't necessarily imply adding them to each language or voice 61configuration file, if a reasonable default can be suggested. 62 63<label id="static"> 64The difference between global and static options is subtler 65and not that important for most users. All voice specific, 66language specific and also global options are implemented 67as user specific, that is, each TTSCP control connection may assign 68a different value to them at the same time. For some options 69however, which are of even more global impact, this may make 70little sense. These are termed static. Assigning a value 71to a static option causes the value to change even for 72other concurrent users. 73 74Whenever an option name is given, it is first understood as a voice option 75(of the current voice); if there is no such voice option, the name 76is treated as a language option, then as a global/static option. To override 77this order, you can prefix an option with "S:", "C:", "L:" or "V:". This will 78restrict the search to static, global, language or voice options, respectively. 79(This is automatically done with configuration files, because every 80configuration file describes either a language or a voice, or it is unrelated 81to the current language and voice altogether.) 82 83<sect1> Option Types 84<p> 85 86Each option has an associated type, which is indicated with each 87option in the documentation. Mostly these are traditional types 88like booleans, strings, and non-negative numbers. Others are 89limited to a fixed choice of values (e.g. "mono" or "stereo"), 90yet others are limited to a choice of values which depends on 91other configuration (e.g. on the levels of descriptions, on the 92available encoding mapping files, or on the current list of 93language configurations). With all these options it is impossible 94to set the option to a syntactically impossible value, although 95it is easy to set the option to a value which makes little sense. 96 97<sect2> Autoconcatenating Options <label id="autoconcatenating"> 98<p> 99 100Several string-typed options (especially the language, voice and soft option 101lists) have special behavior if they appear multiple times 102within the configuration (not limited to the configurations files!). 103In contrast with almost all options which take the last value 104offered, these special options concatenate all the supplied values and 105separate them by colons. This makes sense, as all these option 106values are syntactically colon separated lists of strings. 107 108If you need to set an autoconcatenating option to a different value, 109you need first to reset it first by supplying an empty string to it. 110This does set it to the empty string as opposed to concatenating 111a colon and an empty string to the previous value. 112 113 114<sect1> Configuration Files <label id="cfg-files"> 115<p> 116 117Whenever the program starts up, it reads a number of configuration 118files, setting up the initial (default) values of the options. 119These are located under <tt>/usr/local/share/epos</tt> (unless overidden 120at configure/compile time or 121with the <tt>--base_dir</tt> option on the command line). By convention, 122configuration file names have the ".ini" suffix. 123 124(On a Windows NT-like operating system, you can use the 125<tt>HKEY_LOCAL_MACHINE\SOFTWARE\Epos\Setup</tt> 126registry key to set the value of <tt>Path</tt> to a path leading 127to the configuration files. This value can still be overridden 128by the command line.) 129 130Unless overridden, three files in <tt>/usr/local/share/epos/cfg</tt> will be processed 131to setup the global configuration: <tt>fixed.ini</tt>, <tt>epos.ini</tt> and 132either <tt>ansi.ini</tt> or <tt>rtf.ini</tt> (depending on the preferred 133output format if colored output is turned on -- either ANSI escape sequences 134or RTF are supported at the moment; other markup formats can be added easily). 135By convention, <tt>fixed.ini</tt> contains the standard global and static configuration 136values used by a given installation and rarely or never changes, while 137<tt>epos.ini</tt> contains less permanent parameters and temporary values. 138The global parameters include a list of <em>languages</em>, or language 139configurations which will be parsed when the global configuration is set up. 140Every language <tt>.ini</tt> file in turn contains a list of <em>voices</em> to be 141configured for this particular language. Language configuration files 142are located under <tt>/usr/local/share/epos/lng/*/*.ini</tt>, voice configuration files 143under <tt>/usr/local/share/epos/inv/*/*.ini</tt>, where <tt>*</tt> represents any string 144listed in the list of languages (or voices for a language). Go see the real 145files under <tt>/usr/local/share/epos/cfg/*.ini</tt> for an example. 146 147<sect2> Configuration File Format Overview 148<p> 149 150A configuration file contains one option per line (empty lines are ignored). 151Each option is a name-value pair, separated with whitespace. A string value 152may be (and sometimes must be, e.g. if it begins with whitespace) enclosed 153in double quotes. Every configuration 154file is associated with a certain option set, that is, it contains either just 155global options, or options related to some language or voice. (In the latter 156two cases, the <tt>name</tt> option identifies the language or voice properly.) 157 158<sect2> Character Encoding <label id="encoding"> 159<p> 160 161Sometimes it is not convenient or possible to encode all configuration files 162in the same character encoding. For example, a character encoding may be 163language dependent. But it is even possible for different lines of the 164same file to use different encodings. You can switch character encodings 165for the same file using the <tt>@charset</tt> directive. 166Charset name must be specified as a parameter and it must be enclosed in 167parentheses. Epos attempts to load the corresponding unicode character 168mapping file and immediately switches the charset number for the current 169file. Please note two differences from the <tt/charset/ option: 170the directive only affects the current "logical" file (including included 171files as well as any files it has been included from using the 172<tt>@include</tt> directive), whereas the option doesn't affect it at 173all, but it affects all subsequent files (e.g. for the given language), 174such as the rules file. 175 176You have the following choice of charsets: arbitrary 8-bit encodings 177(provided a Unicode mapping file is present in <tt>cfg/mappings</tt>), 178utf-8, sampa-std (standard SAMPA) and sampa-alt-NAME where NAME is 179a pre-configured SAMPA alternate. 180 181<sect2> Escaping Special Characters <label id="escaping"> 182<p> 183 184It is possible to enter some special characters using escape sequences, such 185as <tt>"\ "</tt> for a space, <tt>"\n"</tt> for a newline, or <tt>"\˜"</tt> 186for <tt>"..."</tt> or <tt>"dots"</tt> (treated as a single character in Epos). 187The available escape sequences are listed in <ref id="escapes" name="the table of escape sequences">. 188 189<table loc="ht"> 190<tabular ca="|l|l|l|l|"> 191<hline> 192 <label id="escapes"> 193 escape sequence | interpreted as | ASCII code | example@ 194<hline> 195 \n | newline | 10 |@ 196 \t | tab | 9 |@ 197 \e | escape | 27 |@ 198 \E | escape | 27 |@ 199 \[ | escape | 27 |@ 200 \\ | backslash | 92 |@ 201 \ | hard space | 255 |@ 202 \# | hash | 35 |@ 203 \; | semicolon | 59 |@ 204 \@ | at sign | 34 |@ 205 \˜ | dots | (1) | No...@ 206 \. | decimal point | (2) | 1.2 kg@ 207 \- | range | (3) | 2-3 people@ 208 \m | minus | (4) | -1@ 209 \X | temporary | (31) |@ 210 \Y | temporary | (30) |@ 211 \Z | temporary | (29) |@ 212 \W | temporary | (28) |@ 213 \V | temporary | (27) |@ 214 \U | temporary | (26) |@ 215<hline> 216</tabular> 217<caption>Escape sequences used in configuration files</caption> 218</table> 219 220(If you suspect this table to be out-of-date, you can consult the <tt>token_esc</tt> 221and <tt>value_esc</tt> constants in <tt>option.lst</tt>, or the table in 222<tt>parser.h</tt>.) ASCII codes in parentheses are ASCII codes used for different 223purposes by Epos. 224 225<sect2> Comments and the @include Directive <label id="include-directive"> 226<p> 227 228A configuration file usually contains various comments. A comment can start 229on any line with a semicolon or hash mark and lasts to the end of line. 230The semicolon (or hash mark) must be located at the beginning of line 231or just after some whitespace. Semicolons in the middle of a word don't 232start a comment. 233 234If a line begins with <tt>@include</tt> (possibly preceded by whitespace), 235it is treated as the <em>include directive</em>. 236The format of the line should be <tt>@include "filename"</tt> and it will 237cause the contents of the <tt>filename</tt> file to be inserted at this place of the 238main <tt>.ini</tt> file. These includes can be nested to any depth up to 239the value of the <tt/max_nest/ option; if no or 240relative path is specified, the directory which holds the topmost file is used for 241the lookup. 242 243<sect2> Other Directives 244<p> 245 246Two more directives, <tt>@warn</tt> and <tt>@error</tt> with obvious semantics 247are available for diagnostic purposes. 248 249<sect1> Command Line 250<p> 251 252Command line option values can be passed to Epos 253at server startup, or to the <tt/say-epos/ utility. 254The behavior of these two command lines is very similar, though not identical. 255The monolithic Epos executable should not deviate from the server executable, 256unless specified otherwise. 257 258The options can be specified anywhere on the command line, and are processed 259from left to right before any other text (which is treated as the text to be 260synthesized) on the command line. Long options, which correspond directly 261to the options specified in configuration files, are preceded with a double dash 262and they take a value, which can be separated 263using the equality sign (<tt/=/), or spacing; the value (<tt/true/ or the empty string) 264can be understood implicitly, if applicable to the option type, and the option 265is followed by another option or comes last at the command line. 266Short options are denoted by single letters, preceded with a single dash, and 267they never take a value. 268 269<sect2> Input Text 270<p> 271 272Technically speaking, this subsection doesn't really concern the options, 273but it is nevertheless included. 274 275The main purpose of the <tt/say-epos/ utility is to convert a specified 276text to speech. Therefore, any command line text which is not part of an option 277name or option value is concatenated together with spaces, and 278sent to the server for the usual processing (TTS and phonetic 279transcription), after all preceding, intervening or following 280options have been sent to the server. 281 282The same is true for the monolithic Epos executable, but in this 283case, only a single argument of this sort is accepted. (Just 284enclose the text with quotes to have it treated as a single 285argument. The sole reason why this is so is the less-than-maintained 286status of the monolithic executable.) 287 288In both cases, quite random defaults are supplied if no input text 289is specified. 290 291It is not possible nor desirable to specify the input text for 292the TTSCP server executable. It is accepted and silently ignored. 293 294 295<sect2> Long Options 296<p> 297 298The long options are also available through the <tt/say-epos/ utility; 299in such case, the long option is passed to the TTSCP server 300without any effect on the <tt/say-epos/ client. 301 302The ordering of the options on the command line is usually not significant, 303unless the current language or voice is switched during the processing. 304An example: 305 306<tscreen><verb> 307say-epos --language german --pausing "Wie geht es?" --show_segments 308</verb></tscreen> 309 310This sets the default language to German, enables pausing after each 311transformation rule is applied to the text (sets the <tt/pausing/ option 312to <tt/true/, in other words) and prints the segment string generated 313in the process (sets the <tt/show_segments/ option to <tt/true/). The string 314to be transcribed and synthesized is given on the command line as well 315(it must be quoted unless it consists of a single word). 316 317The list of all available long options together with their types 318can be obtained with <tt>eposd -H</tt> of the main program (not the client 319stub, sorry). The semantics of nearly all individual long options is described 320<ref id="indivopts" name="below">. 321 322For turning long boolean options off, it is possible to give their name 323with three dashes. Therefore, 324 325<tscreen><verb> 326say-epos ---show_transcript "Say this, do not show the transcription" 327</verb></tscreen> 328 329is equivalent to 330 331<tscreen><verb> 332say-epos --show_transcript off "Say this, do not show the transcription" 333</verb></tscreen> 334 335Refer to the <ref id="indivopts" name="individual options"> section 336for documentation on available long options. 337 338<sect2> Language and Voice Switching 339<p> 340 341Two pseudo-options <tt/--language/ and <tt/--voice/ can be used to switch 342the current language or voice, or to specify options for other than the 343default language or voice. There may be multiple options of this kind 344given to the <tt/say-epos/ utility or the monolithic Epos executable, and 345their ordering is important. For example, 346 347<tscreen><verb> 348say-epos Something. --init_f 80 --voice vichova 349</verb></tscreen> 350 351doesn't do the expected thing, i.e. use the voice named "vichova" 352as modified by setting the neutral pitch for this command to 80. 353Instead, the neutral pitch is set for the default voice, and 354then the voice is switched to the specified one. To get the 355intended behavior, reorder the command line: 356 357<tscreen><verb> 358say-epos Something. --voice vichova --init_f 80 359</verb></tscreen> 360 361<sect2> Short Options 362<p> 363 364The most frequently used options and occasionally even collections 365of options and/or other stuff are given a shortcut, called a <em>short option</em>. 366A short option is a single letter preceded by a single dash. 367Usual conventions for merging short options into a single string 368are available, and the example above may thus be abbreviated as 369 370<tscreen><verb> 371say-epos --language german -p "Wie geht es?" -d 372</verb></tscreen> 373 374or even 375 376<tscreen><verb> 377say-epos --language german -pd "Wie geht es?" 378</verb></tscreen> 379 380(There is no short option for <tt>--language</tt>.) 381 382The short options are interpreted directly by the <tt/say-epos/ utility; 383that's why the list of short options available with this utility 384is different from the list of short options available with the server 385or the monolithic Epos executable. 386A list of (the most of) the server short options can be obtained with 387<tt>eposd --help</tt>, or <tt>eposd -h</tt>/. A list of (the most of) 388short options understood by the <tt/say-epos/ utility can be obtained with 389<tt>say-epos -h</tt>. Such list however includes undocumented options 390which may disappear in the next releases. 391 392Please keep in mind that the <tt>say-epos</tt> utility is only an example of a TTSCP 393client and not a full-fledged controlling interface to Epos. 394 395<sect3> Server Short Options 396<p> 397 398<descrip> 399<tag>-f</tag> 400 Do not fork at startup. Same as <tt/---forking/. 401<tag>-h</tag> 402 Show a summary of available short options 403<tag>-p</tag> 404 Same as <tt/--pausing/. 405<tag>-v</tag> 406 Show Epos version. 407<tag>-D</tag> 408 Turn on debugging output. Multiple <tt/-D/ options cause the output to be more 409 verbose: this is equivalent to lowering the <tt/debug_level/ option to four 410 minus number of occurences. 411<tag>-H</tag> 412 In addition to a summary of short options, show also a list of all available 413 long options. 414</descrip> 415 416<sect3> Client Short Options 417<p> 418 419<descrip> 420<tag>-k</tag> 421 Shut down the server. 422<tag>-l</tag> 423 List all available languages and available voices for the current language. 424<tag>-m</tag> 425 Write the waveform to a file (said.vox in the client's current directory) 426 instead of writing it to the local sound card; the output doesn't 427 include any header and is in the mu law format. 428<tag>-o</tag> 429 Write the waveform to the standard output. In this case, no transcription 430 is performed. 431<tag>-u</tag> 432 Turn on utterance chunking. This option has unintuitive consequences 433 when combined with <tt/-w/. 434<tag>-w</tag> 435 Write the waveform to a file (said.wav in the client's directory) instead 436 of writing it to the local sound card. 437</descrip> 438 439 440<sect1> Setting Options in TTSCP 441<p> 442 443See the <ref id="ttscp" name="TTSCP specification"> for general 444overview of TTSCP and the <tt/set/ command. 445 446<sect2> <tt>restr.ini</tt> File <label id="restricted-options"> 447<p> 448 449Setting options in TTSCP can be a security problem, as some options 450can cause the server to access unrelated files. It is therefore 451strongly recommended not to run the Epos daemon with superuser privileges, 452but sometimes a more fine-grained access control mechanism is needed. 453It is authentication and limiting access to specified options 454for some or all users. 455 456By default, all settable parameters can be changed by any outside connection 457(this doesn't affect the value in use for any other connection in any way). 458You can control this privilege by restricting it in <tt>cfg/restr.ini</tt>. 459 460Every line of that file is in the form 461 462<tscreen><verb> 463option_name access_rights 464</verb></tscreen> 465 466The <em>access rights</em> must be in lowercase and must not contain spaces. They are 467a sequence of <tt/r/, <tt/w/', <tt/$/ and <tt/#/, none of which may be repeated. 468Their order is significant, the interpretation is as follows: 469 470<itemize> 471 <item> if no <tt/r/ is mentioned, nobody can read the option value 472 <item> if no <tt/w/ is mentioned, nobody can change the option value 473 <item> if a <tt/r/ or <tt/w/ appears without <tt/$/ or <tt/#/ to the left of them, 474 they grant the read and write rights, respectively, to even 475 anonymous connections. 476 <item> following $, they grant the respective rights to any authenticated user. 477 <item> following #, they grant the respective rights to the root only. 478</itemize> 479 480<table loc="ht"> 481<tabular ca="|l|l|"> 482<hline> 483<tt>r</tt> | read only@ 484<tt>w</tt> | write only@ 485<tt>rw</tt> | no restriction@ 486<tt>#w$r</tt> | root can write, authenticated users can read@ 487<tt>r#w</tt> | anyone can read, root can also write@ 488<tt>#rw</tt> | root can read/write@ 489<hline> 490</tabular> 491<caption> 492 Examples of option access rights 493</caption> 494</table> 495 496Unknown parameters are considered just not to have been implemented in this 497particular version of Epos and are not reported. Parameters not mentioned 498in <tt>restr.ini</tt> are allowed unlimited access by any connection. 499 500Note that the location of this file can be changed at the command line 501(with <tt/base_dir/). 502 503<sect1> Semipermanent Personal Preferences 504<p> 505 506If many users with different needs and aesthetic feelings 507share the same Epos daemon installation, they may choose to 508place the appropriate TTSCP commands into a file and to point 509the <tt>TTSCP_USER</tt> environment variable to this file. 510The contents of that file will be transmitted by the client 511to set up the working environment at the beginning of every 512session. 513 514An example: 515 516<tscreen><verb> 517set language czech 518set voice kadlec 519set init_f 90 520set init_i 110 521set language slovak 522</verb></tscreen> 523 524This example will adjust the preferred pitch and volume for a certain 525Czech voice; it will also set the default language to Slovak. See 526the <ref id="ttscp" name="TTSCP specification"> for more info. 527 528<label id="reinitialization"> 529<sect1> Reloading Configuration Files 530<p> 531 532Under UNIX, Epos reinitializes itself upon a hangup signal (SIGHUP). 533Existing TTSCP connections are terminated and configuration is reloaded. 534 535<sect1> Soft Options <label id="soft-options"> 536<p> 537 538Most options (discussed until this point) have built-in meanings 539and semantics; for most uses this is sufficient and necessary. 540However, the user may also decide to define additional options 541to be provided by a language to its voices. This mechanism is 542called <em>soft options</em>; soft options are always voice options 543and are described at the language level (that is, the name, type 544and default value is supplied with the language, but individual 545voices may choose to specify a value for the option). 546 547The soft options are described by the language option <tt>soft_options</tt>. 548It is an autoconcatenating list of colon separated descriptions of individual soft options; 549every item is of the format <tt>name[(type)][=default]</tt>, where <tt>name</tt> 550is an arbitrary option name, <tt>type</tt> is <tt>b</tt> 551(meaning boolean; other possibilities might include 552<tt>s, n, c</tt> for strings, integers and characters, respectively, 553but these don't seem to be useful. The <tt>default</tt> is the default 554value to be used if the option is left unspecified by a voice. It should be 555chosen as a backward compatible value for a new option if applicable. 556 557The type and/or the default may be left unspecified. The default <tt>type</tt> is 558boolean, the default <tt>default</tt> is an empty string. 559 560An example: 561 562<tscreen><verb> 563 soft_options "colloquial=false" 564 soft_options "segment_listing_file(s)=traditnl.dph" 565</verb></tscreen> 566 567This example defines two options, a boolean <tt>colloquial</tt> and 568a string <tt>segment_listing_file</tt>. 569 570The sets of soft options for individual languages are independent and never 571clash with each other. However, built-in option names may not be used 572as soft option names. 573 574Please note the difference between rule file macros and soft options: 575rule file macros are useful for arbitrary string replacement and 576they serve well for concentrating every single idea to a single place 577at the startup time. 578Soft options, on the other hand, are limited to conditioning rules, 579but can change value later just as any other option without the need 580to recompile the rules. Indeed, multiple users may use the same rules 581with different values of the same soft option simultaneously. 582 583 584<sect1> Level of Description Dependent Options 585<p> 586 587Some options, especially pertaining to parsing the input and 588formatting the output, are set separately for every layer of 589the <ref id="tsr" name="TSR">, so that each of them is actually 590an array of options, indexed using the commercial at character 591(@) followed by a layer name. For example, 592 593<tscreen><verb> 594 perm@colon ":," 595</verb></tscreen> 596 597defines the permissible colon terminators. Since the TSR layer names 598are themselves defined by the <tt/unit_levels/ option, the availability 599of such options is dependent on the current value of some other option. 600For other options, such as <tt/default_scope/, the value is a layer name, 601and is thus meaningful only after the layers are defined; all such options 602can only be set after the <tt/unit_levels/ option has been set correctly. 603 604As level description dependent options (the former type) do not yet exist 605upon program startup, the access control in <tt/restr.ini/ only works 606for the arrays of options, not individual options: 607 608<tscreen><verb> 609 perm r 610</verb></tscreen> 611 612For these and other reasons, changing the <tt/unit_levels/ option is not 613recommended after any of both types of level of description dependent 614options have been set. 615 616 617<sect1> Selected Individual Options <label id="indivopts"> 618<p> 619 620Most individual options will be described in this section. The rest are either 621straightforward or rarely useful. A complete list of options can be obtained 622through <tt/eposd -H/ or in <tt>src/options.lst</tt>. 623 624The type and the semantic class of the argument is indicated for all individual 625options except for truth value (<tt/on//<tt/off/) options. This is because 626these options, when found without an argument, are automatically interpreted 627as <tt/on/. 628 629Many options may not make any sense to you; indeed, some of them don't 630actually make sense to me. Such options are usually relics from now 631forgotten ad hoc configurations. I appreciate any suggestions on how 632to replace any old fashioned configuration mechanisms with more generic 633and/or simpler ones. 634 635<sect2> Overall Options 636<p> 637 638Some options control overall preferences, strategies and assumptions 639to be used by Epos. Most of them are global booleans. They are usually 640of technical nature and the output produced by Epos should not change 641with these options changed, but they can be useful in some special 642configurations. They also get added to resolve some simple software 643engineering dilemmata. 644 645The options in this subsection are not <ref id="static" name="static"> 646unless specified otherwise. 647 648<descrip> 649<tag>--comma <sl/delimiter/</tag> 650 This is the delimiter for Epos-generated lists, especially 651 in TTSCP; an arbitrary string is allowed. Do not change. 652<tag>--default_char <sl/character/</tag> 653 The character to replace any unknown characters in the input text. 654 See also the <tt/relax_input/ option. 655<tag>--end_of_file <sl/character/</tag> 656 The character to terminate the input text. This defaults to the 657 escape character. The length of the input text is usually 658 defined externally (by the <tt/apply/ command within a control 659 TTSCP connection or by the end of an input), however, there 660 are cases where this is not applicable or desirable for some 661 reason. The character specified by this option terminates 662 the input text, but not the input stream. It is also necessary 663 to press <tt/Enter/ after the character. Applies only to the 664 monolithic Epos. 665<tag>--asyncing</tag> 666 Turn on to enable asynchronous close() processing. Usable only 667 on unices; uses fork to delegate the synchronous close() 668 to a child. This option can be useful for eliminating communication 669 delays when closing a sound card file descriptor, but it can cause 670 subsequent references to the same device fail, because the child 671 still hasn't released the device. The option has no meaning 672 on non-UNIX systems, where the close() is always synchronous. 673<tag>--forking</tag> 674 Turn on to allow forking and fully detaching the Epos daemon. 675 Usable only on unices. If off, some debugging information will 676 be written to <tt/stdout/ in some configurations. 677<tag>--init_time <sl/n/ </tag> 678 If set to a non-zero value under a UNIX, the parent process will 679 wait for at most <sl/n/ seconds for the daemon process to start 680 accepting connections. One second is likely to be more than enough 681 except when the machine is severely overloaded. Note that most 682 Epos initialization takes place before the fork, whereas this 683 option is only used after the fork. 684<label id="ml-option"> 685<tag>--markup_language <sl/ml/</tag> 686 The parameter is either "ansi", "rtf" or "none". This parameter 687 is only effective in <tt>fixed.ini</tt> or on the command 688 line. Depending on its value, the <tt/ansi.ini/ or <tt/rtf.ini/ 689 configuration file is appended to the <tt/fixed.ini/ file during 690 parsing the configuration. These two files contain the complete 691 output formatting information necessary for printing text in 692 either the ANSI escape sequences (ISO 6429) or the Rich Text 693 Format; they use colors to distinguish between symbols of different 694 levels of description. 695<tag>--pend_max <sl/n/ </tag> 696 The maximum number of subtasks waiting in an input queue for 697 a single agent. If this limit is reached, the preceding 698 agent stops processing further input until only <tt/pend_min/ 699 subtasks are left in the queue. Setting this limit higher 700 will consume additional memory, as more processing can happen 701 in advance, but setting it too low may cause unnecessary delays. 702<tag>--pend_min <sl/n/ </tag> 703 The minimum desired number of subtasks waiting in an input 704 queue for a single agent. If the queue length decrements 705 to this limit and the preceding agent has enough input 706 to process, it resumes operation. This limit should 707 be set roughly to half the <tt/pend_max/ value. 708<tag>--memory_low</tag> 709 Turn on if you're very low on memory. This mode sacrifices speed 710 for a little bit of saved memory. Basically, turning this on 711 caused various dictionaries to be discarded whenever the rule 712 which has used them has been applied and reloaded the next time 713 it is needed. Likewise, cached files are released upon the 714 last <tt/unclaim/. Otherwise these data structures are kept cached 715 in for the next use. 716<tag>--paranoid</tag> 717 With this option on, Epos will tend to detect more errors in 718 various kinds of input files than without. It will rather 719 try to reject suspicious or formally incorrect inputs, 720 than to do something reasonable with them. Useful for debugging. 721 This option is not static. 722<tag>--pausing</tag> 723 With this option on, Epos will pause and wait for a keypress 724 after every rule is applied. Of course, this is incompatible 725 with the <tt/forking/ option and some other setups. Should 726 be only used for debugging. 727<tag>--ptr_trusted</tag> 728 One of the checks performed when the <ref id="trusted-option" 729 name="trusted"> option is disabled is checking whether 730 some pointers are actually pointers, that is, very big numbers 731 when cast to an integer. This can be useful on some machines, 732 but it is absolutely unportable. It may or may not work with your 733 compiler; enable this option to skip these checks. 734<tag>--relax_input</tag> 735 Turn on in real life situations. When off, Epos will quit parsing 736 any text which contains an unknown character (not listed in one of the 737 <tt/perm*/ or <tt/input_perm*/ options). This option replaces such 738 characters with the value of the <tt/default_char/ option before 739 they're classified. 740 This option is not static. 741<tag>--show_rule</tag> 742 Print each rule before it is applied. This is useful mostly for 743 debugging situations (when a text is parsed in an unexpected way 744 and the user is trying to find out which rule has escaped his 745 attention). This option may not work with all setups. 746<label id="profile-option"> 747<tag>--profile <sl/filename/ </tag> 748 Setting this option to a file name causes profiling information 749 to be recorded to the file named. The file is created in the 750 current directory of the server if a relative pathname is given. 751 Each line of the profile log corresponds to one timeslice of 752 an agent. First, the time spend before running the agent 753 (after the last agent has finished). Second, agent type. 754 Third, time spent by the agent. Both time intervals are given 755 in microseconds and their accuracy depends on the 756 <tt/gettimeofday/ system call. Using the profiler on a loaded 757 machine is going to give almost meaningless results. 758<tag>--handle_size <sl/n/ </tag> 759 The TTSCP handle length in character. The handles are always 760 generated randomly using a 64 character alphabet. Use small 761 values for debugging the TTSCP implementation manually (and accept 762 the risk of a handle-guessing attack); use higher values in a 763 production environment. 764<tag>--shriek_art number</tag> 765 The picture to be printed to <tt/stdshriek/ in case of an error. 766 May or may not work. Small integers such as 0, 1 or 2 are possible. 767<label id="trusted-option"> 768<tag>--trusted</tag> 769 Code related to the <tt/class unit/ often calls its <tt/sanity/ method 770 to detect any serious structure violation before it makes Epos crash 771 mysteriously. In stable versions, however, these checks are unlikely 772 to be necessary. Use this option to skip them. 773<tag>--verbose</tag> 774 When the rules are dumped with the <tt/debug/ rule type and this 775 option is set, all of them will be displayed. Otherwise only the 776 current rule is displayed. That's all. 777 778<tag>--localsound</tag> 779 Enables the use of the TTSCP <tt>#localsound</tt> output module. 780<tag>--readfs</tag> 781 Enables the use of file system based TTSCP input modules. See 782 the <ref id="pseudorootdir-option" name="pseudo_root_dir option"> 783 for more details. Note that this option can not be turned on 784 unless the underlying operating system has a fully functional 785 implementation of the <tt/select/ call. 786<tag>--writefs</tag> 787 Enables the use of file system based TTSCP output modules. See 788 the <ref id="pseudorootdir-option" name="pseudo_root_dir option"> 789 for more details. 790 791<tag>--unit_levels</tag> 792 Levels of description. Must be a colon separated list which includes 793 <tt/segm/ and <tt/phone/ as the two lowest levels, and <tt/text/ 794 as the highest level of description. There are reasons why this should not 795 be a language dependent option; you can however define this to be the 796 union of all levels of description needed by any language. 797<tag>--default_scope</tag> 798 The default scope level of a rule -- one of the levels of description 799 defined with the <tt/unit_levels/ option. 800<tag>--default_target</tag> 801 The default target level of a rule -- one of the levels of description 802 defined with the <tt/unit_levels/ option. 803 804<tag>--languages <sl/list/</tag> 805 Lists initially available languages. The parameter is a colon separated 806 list of language names. Every language must have its associated <tt/.ini/ 807 file; the name of the file is obtained by suffixing <tt/.ini/ to the 808 language name, while the directory name matches the language name and is 809 located under the directory as determined by the <tt/lang_base_dir/ 810 option. The first language listed will become the default language. 811 This option <ref id="autoconcatenating" name="autoconcatenates">. 812<tag>--sampa_alts <sl/list/</tag> 813 Lists the alternate encodings of SAMPA (i.e. non-SAMPA SAMPA-like 814 notations used by people e.g. for languages where SAMPA is not 815 or was not available at the moment it was needed). The parameter 816 is a colon separated list of strings. Every alternate encoding 817 has its associated <tt/sampa-alt-XXX.txt/ file where the <tt/XXX/ 818 comes from this list. These encodings are loaded at Epos startup. 819 820</descrip> 821 822<sect2> Types of Output 823<p> 824When Epos is compiled as a TTSCP server, the variability of data formats 825is controlled by TTSCP rather than by option settings. However, there 826are some options related to the output formats produced by the monolithic 827binary (executable). There are also some conventional informative outputs 828that can be produced by the monolithic and server binaries equally. 829 830All options in this subsection are <ref id="static" name="static">. 831 832<descrip> 833<tag>--show_phones</tag> 834 Print the sequence of sounds generated from the text processed. 835 Monolithic binary only. 836<tag>--show_segments</tag> 837 Print the sequence of segments generated from the text processed. 838 Monolithic binary only. 839<tag>--show_raw_segs</tag> 840 When used in conjunction with the <tt/show_segments/ option, the segments 841 will be not only listed by name, but they will also include the actual 842 numbers generated. Monolithic binary only. 843<tag>--play_segments</tag> 844 Synthesize the waveform and say it through the sound card. 845 Monolithic binary only. 846<tag>--wave_header</tag> 847 When dumping the waveform into a file or a TTSCP data connection, 848 put the RIFF wave file header at its beginning. Regardless of 849 this value, the header is never added when writing the waveform 850 to a sound output device (a file descriptor which understands 851 the usual ioctls). TTSCP requires this option be always set 852 to <tt/on/; consequently, the option is only reasonably useful with the 853 monolithic binary. 854<tag>--ulaw</tag> 855 Generated waveform uses mu law sample encoding instead of linear encoding. 856<tag>--out_sampling_rate <sl/Hz/ </tag> 857 Voice dependent option. May be used to downsample the output by one half. 858<tag>--autofilter</tag> 859 If this option is enabled, an appropriate low band filter is used whenever 860 downsampling. This is necessary to avoid phantom sounds in the output. 861<tag>--label_seg</tag> 862 Output segment (diphone) labels in the output waveform using the appropriate 863 RIFF WAVE chunks. 864<label id="labelphones-option"> 865<tag>--label_phones</tag> 866 Output phone labels in the output waveform. This is only possible if 867 phone boundary information is made available for the inventory using 868 the <ref id="snlfile-option" name="snl_file option">. For other voices, 869 this option has no effect. 870<tag>--label_sseg</tag> 871 Very experimental. If used in conjunction with the <tt/label_phone/, 872 the phone labels are assigned not the phone level, but the highest 873 level whose boundary is detected at this place. If you do use this 874 option, be aware that Epos will use a (very slightly) TTSCP 0 875 non-compatible internal representation for the segment (diphone) stream 876 to preserve the necessary suprasegmental unit boundary information. 877 Consequently, network voices provided by different TTSCP servers may 878 fail reporting unexpected segment numbers. 879<tag>--immed_segments</tag> 880 Print the sequence of segments generated from the text processed 881 just after the <tt/segments/ rule. This is useful especially 882 in conjunction with the <tt/neuronet/ option where the segment layer 883 is created, but later to be discarded by the rules. 884 Monolithic binary only. 885<tag>--neuronet</tag> 886 This is normally on. Turning this off skips the neuronet 887 initialization and makes Epos shutdown if the functionality 888 is requested later. This may be useful with debugging tools 889 like the Electric Fence. 890<tag>--help</tag> 891 Print a brief synopsis of short options upon startup. No data processing 892 is performed. 893<tag>--long_help</tag> 894 Print a list of long options upon startup. No data processing is performed. 895<tag>--version</tag> 896 Print the current version number to <tt/stdshriek/ upon startup. 897</descrip> 898 899 900<sect2> Text Output Formatting 901<p> 902 903You can tailor the conventions for printing out processed text quite a lot. 904Basically, we're printing out a <ref id="tsr" name="text structure representation">, 905so that we can see what level of description does a character belong to. Preserving 906this information in the output is often very desirable; it can either be done 907by inserting delimiters such as custom syllable breaks, or by coloring some levels 908of description. 909 910This family of options can result in a quite complex configuration. 911That's why we provide at least 912two complete sets of settings in <tt/ansi.ini/ and <tt/rtf.ini/. You can use the 913<ref id="ml-option" name="markup_language"> option to switch between them 914in <tt/fixed.ini/. 915 916Some options control the colors used for output. For the time being, 917these options actually take the escape sequence needed to switch the 918color for the current format (e.g. ANSI escape sequences or RTF). 919In principle, other strings than escape sequences can be printed, 920but such configuration is discouraged. 921 922Some options configure the appearance of the <ref id="tsr" name="TSR"> 923to the user. The model we use is assigning a few colors consistently 924to the individual levels of description and marking up the boundaries 925between units with parentheses, separators or both. The levels of 926description are <ref id="tsr-levels" name="defined"> in compile time. 927The <tt/segment/ and <tt/text/ may not be applicable for some of 928these options. This model of displaying the TSR is not used for 929transmitting the text over TTSCP. 930 931All the options in this subsection are <ref id="static" name="static">. 932 933<descrip> 934<tag>--colored</tag> 935 If disabled, all color manipulating options will be ignored. 936 Many configurations will enable this by default, because the 937 escape sequences are rarely usable directly and never indirectly. 938<tag>--normal_color <sl/color/</tag> 939 String to switching to the neutral (default) color. Issued at the end 940 of every colored piece of text. 941<tag>--curr_rule_color <sl/color/</tag> 942 String to switch to the a <em/bold/ color. The bold color will 943 be used to highlight the current rule in the list of rules printed 944 by the <ref id="debug-rule" name="debug rule type">. 945<tag>--fatal_color <sl/color/</tag> 946 String to switch to the color used for printing out fatal error 947 messages. 948 949<tag>--header <sl/filename/</tag> 950 The value is the file name of a file in the directory specified 951 by the <tt/ini_dir/ option, which is to be printed before any 952 phonetic transcription. 953<tag>--footer <sl/filename/</tag> 954 The value is the file name of a file in the directory specified 955 by the <tt/ini_dir/ option, which is to be printed after any 956 phonetic transcription. 957<tag>--begin* <sl/string/</tag> 958 The asterisk stands for a @-separated symbolic name of a linguistic description 959 level, such as <tt/phone/, <tt/syll/ or <tt/word/. The parameter 960 is a string which will be printed before the first unit within this 961 unit, for example before the word-initial syllable in case of 962 <tt/begin@word/). 963<tag>--close* <sl/string/</tag> 964 The asterisk stands for a @-separated symbolic name of a linguistic description 965 level, such as <tt/phone/, <tt/syll/ or <tt/word/. The parameter 966 is a string which will be printed after the last unit within this 967 unit, for example before the word-final syllable in case of 968 <tt/close@word/). 969<tag>--color* <sl/string/</tag> 970 The asterisk stands for a @-separated symbolic name of a linguistic description 971 level, such as <tt/phone/, <tt/syll/ or <tt/word/. The parameter 972 is the string to switch the color for this level of description. 973<tag>--separ* <sl/string/</tag> 974 The asterisk stands for a @-separated symbolic name of a linguistic description 975 level, such as <tt/phone/, <tt/syll/ or <tt/word/. The parameter 976 is a string which will be printed between adjacent units of this 977 level of description, for example between words in case of 978 <tt/separ@word/). 979<tag>--structured</tag> 980 Whether the verbose model of displaying the TSR as described above 981 is used. When off, only the text itself is printed and simple 982 spacing is used to delimit units which do not correspond to 983 actual characters. This option is orthogonal to the <tt/colored/ 984 option. 985<tag>--postfix</tag> 986 If on, the upper level characters (such as punctuation) are printed 987 after the lower level characters (such as letters or sounds) 988 in the phonetic transcription. 989<tag>--prefix</tag> 990 If on, the upper level characters (such as punctuation) are printed 991 before the lower level characters (such as letters or sounds) 992 in the phonetic transcription. Disabling both <tt/prefix/ and 993 <tt/postfix/ options effectively disables printing other characters 994 than sounds. This option is orthogonal to the <tt/structured/ 995 option. 996<tag>--swallow_underbars</tag> 997 Epos uses the low line (<tt/_/) character to represent 998 suprasegmental units with no content at their level (e.g. syllables 999 are often only implicitly terminated or even generated 1000 by the rules and have no associated symbol); this option, 1001 when enabled, suppresses them completely. 1002</descrip> 1003 1004 1005<sect2> Limits 1006<p> 1007 1008Most algorithms used in Epos are boundless, avoiding techniques like fixed size 1009arrays or buffers. On the other hand, there are instances when this is inadequate, 1010especially for speed or space considerations. In these cases Epos tries to 1011use growable data structures, so that they perform well up to a certain size limit 1012and then somewhat slower, but still correctly. We call such a limit a <em/soft limit/, 1013as opposed to a <em/hard limit/ which cannot be exceeded. Most limits in Epos are 1014configurable and soft, but some hard limits have also been imposed. This subsection 1015also covers some time vs. space trade-off configuration parameters, though 1016these are no limits at all. Also some <em/sanity check limits/ are imposed; these 1017act as hard limits, but can be effectively disabled by setting them to absurdly 1018high values, with no direct impact on efficiency in the typical case. 1019 1020In fact, you can ignore this subsection completely, as the few hard limits tend to 1021employ reasonably high values. 1022 1023The options in this subsection are <ref id="static" name="static"> unless 1024specified otherwise. 1025 1026<descrip> 1027<tag>--buffer_size <sl/bytes/</tag> 1028 Soft limit. The initial buffer size for a wave file. This value is not 1029 used, if we already know that we will eventually write this waveform 1030 to a sound card device; in this case we use ioctls to find out the size 1031 of its hardware buffer to maximize the chance of getting a smooth 1032 playback. 1033<tag>--ssif_buff_size <sl/bytes/</tag> 1034 Soft lmit. The initial buffer size for the SSIF buffer 1035 as SSIF is being extracted from TSR. 1036<tag>--dev_text_len <sl/bytes/</tag> 1037 Sanity check limit. When reading from a device, this is the maximum 1038 amount of data which will be read for processing. This is not necessary 1039 when reading from a file, because the length of a file can be known in 1040 advance. This option is not static. 1041<tag>--hash_search <sl/n/</tag> 1042 Trade-off. Controls how many multipliers are tried out when 1043 constructing a perfect hash table, for each table size. 1044 The search begins at 1 and continues up to <sl/n/. 1045 If the table still has collisions, hash table size is 1046 increased by one and the search restarts. This is iterated 1047 until a perfect hash table is found. As we only use perfect hash 1048 tables for representing constant sets and functions, they are only 1049 constructed during Epos startup. Setting this option to a small 1050 value (such as 17) speeds up Epos startup, while larger values 1051 can sometimes arrive at a smaller table, thus saving some memory. 1052<tag>--hashes_full <sl/percentage/</tag> 1053 Trade-off. Controls how full should a hash table ideally be. 1054 The hash tables used in Epos 1055 are actually quite robust performance-wise, so that even values 1056 like 1000, that is, ten data items per a hash table slot, result 1057 in near-optimal speed. Values somewhere below 100 are the best bet. 1058<tag>--max_errors <sl/count/</tag> 1059 Sanity check limit. If more than <sl/count/ of errors in a rules file 1060 is found, Epos quits parsing the file. 1061<tag>--max_nest <sl/depth/</tag> 1062 Sanity check limit. If the <ref id="include-directive" 1063 name="include directives"> nest deeper than this value, 1064 Epos quits parsing the file on the assumption the inclusion 1065 is cyclic. 1066<tag>--max_line_len <sl/characters/</tag> 1067 Hard limit. Maximum line length in a text-oriented input file. 1068 Longer lines are truncated. 1069<tag>--max_net_cmd <sl/characters/</tag> 1070 Hard limit. Maximum TTSCP command length. TTSCP lines longer 1071 than this will be truncated. The protocol requires this value 1072 to be at least 80, but a few kilobytes is recommended. 1073<tag>--max_rule_weight <sl/weight/</tag> 1074 Sanity check limit. Maximum rule weight in a choice, as well as the maximum 1075 rule repeat count. Using very large weights can result in memory 1076 exhaustion. Values on the order of 10000 are still perfectly safe. 1077<tag>--max_text_size <sl/bytes/</tag> 1078 Sanity check limit. Maximum amount of space allowed for growable 1079 processing buffers, or for the input text (checked just before parsing). 1080 This option is generally used to avoid memory exhaustion. 1081<tag>--max_utterance <sl/bytes/</tag> 1082 A trigger of a hard limit. If utterance chunking is employed, 1083 Epos tries quite hard to shrink every utterance below this limit 1084 based on a fixed language independent heuristic. 1085<tag>--split_utterance <sl/bytes/</tag> 1086 Hard limit. If utterance chunking is employed 1087 and Epos completely fails to break an utterance below 1088 the <tt/max_utterance/ value, it will simply split the 1089 string after <tt/split_utterance/ bytes. 1090<tag>--multi_subst <sl/count/</tag> 1091 Sanity check limit. How may substitutions will be applied to a unit 1092 during processing of a <tt/subst/ rule. The rule is applied until 1093 the unit settles down or until this limit is reached. In the latter 1094 case, the substitution is considered impossible (infinite). 1095<tag>--rules_in_block <sl/count/</tag> 1096 Soft limit. Number of rules used in a block of of rules. 1097<tag>--scratch_size <sl/bytes/</tag> 1098 Hard limit. Epos uses a temporary internal buffer in a few places. 1099 Usually only very few bytes of the buffer are needed, but overflowing 1100 it is fatal. It is recommended to provide at least a few hundred bytes, 1101 preferably kilobytes, for this buffer. 1102<tag>--seg_buff_size <sl/segments/</tag> 1103 Soft limit. Maximum number of segments generated by the diphoniser 1104 and synthesized at once. It more segments have to be generated, 1105 they are synthesized in chunks of <tt/seg_buff_size/. If this 1106 option is set to zero, a growable buffer is used instead, and 1107 there is no limit on memory consumed. 1108 This option has no effect in the monolithic Epos. 1109<tag>--variables <sl/count/</tag> 1110 Soft limit. Number of variables used in a set of rules. 1111</descrip> 1112 1113 1114<sect2> Language Dependent Configuration 1115<p> 1116 1117This subsection lists some options defined for each language. Additional 1118language dependent options are certain directory and file names and possibly 1119others. As every voice is associated with a single language (two voices 1120may share a multilingual segment inventory if desired), every voice dependent 1121option is also language dependent. 1122 1123<descrip> 1124<tag>--name <sl/voicename/</tag> 1125 This option assigns a name to a newly created language. If there is no name 1126 specified, this option defaults to the configuration file name (from the 1127 last slash to the nearest dot) the configuration has been loaded from. 1128 The name is then used to refer to the language in TTSCP. The language name 1129 must begin with an alphabetical character and consist of alphanumerical 1130 characters (dashes and underscores are also allowed). 1131<tag>--voices <sl/list/</tag> 1132 Lists initially available voices. The parameter is a colon separated 1133 list of voice names. Every voice must have its associated <tt/.ini/ 1134 file; the name of the file is obtained by suffixing <tt/.ini/ to the voice name 1135 while the directory name matches the voice name and is located under 1136 the directory as determined by the per language (default) <tt/inv_dir/ 1137 option. The first voice listed will become the default voice for its 1138 language until switched. 1139 This option <ref id="autoconcatenating" name="autoconcatenates">. 1140<tag>--soft_options <sl/list/</tag> 1141 Lists available soft options as described in subsection 1142 <ref id="soft-options" name="soft options">. 1143 This option <ref id="autoconcatenating" name="autoconcatenates">. 1144<tag>--fallback_mode <sl/mode/</tag> 1145 Not used under normal circumstances. Epos initialises its 1146 synthesis type dependent specific structures the first time 1147 it uses a voice. Should such an initialization fail due 1148 to the reason specified by this option, the current voice will 1149 be switched to the voice specified by the <ref 1150 id="fallbackvoice-option" name="fallback_voice"> option 1151 and the initialisation will be retried. The <sl/mode/ 1152 can either be a TTSCP error code of the <tt/4xx/ class, 1153 or a template mode identifier. In the former case, 1154 the fallback occurs only if the initialization fails 1155 with the specified TTSCP error code. For the latter 1156 case, the following modes have been defined: 1157 <table loc="h"> 1158 <tabular ca="|l|l|"> 1159 <tt>0</tt> | fallbacks are disabled @ 1160 <tt>1</tt> | fallbacks occur on all 4xx class errors @ 1161 <tt>4</tt> | fallbacks occur with uninstalled voices (445) and network errors (47x)@ 1162 <tt>7</tt> | fallbacks occur with network errors (47x)@ 1163 </tabular> 1164 </table> 1165<label id="fallbackvoice-option"> 1166<tag>--fallback_voice <sl/voicename/</tag> 1167 Voice to switch to if another voice fails to initialize. 1168<tag>--rules_file <sl/filename/</tag> 1169 The parameter is a filename. The file contains the transformational 1170 rules to be applied for this language. 1171<tag>--perm* <sl/set/</tag> 1172 The asterisk stands for a @-separated symbolic name of a linguistic description 1173 level, such as <tt/phone/, <tt/syll/ or <tt/word/. The parameter 1174 is a simple sequence of all characters belonging to this level 1175 of description. For example, <tt/perm@phones/ will list letters, 1176 numbers and other segmental symbols. Punctuation will be assigned 1177 to the higher level sets. The sets should be disjoint and only the 1178 characters actually processed by the rules should be listed here. 1179 The language independent built-in parser tries to resolve the most 1180 common ambiguities of Latin-based writing systems, like periods. 1181<tag>--perm_input* <sl/set/</tag> 1182 Additional permisible characters to the respective lists 1183 specified by the <tt/perm*/ options to be permitted within 1184 an input text in the initial parse. The characters will 1185 however not be permitted later in re-parses. 1186<tag>--perm_working* <sl/set/</tag> 1187 Additional permisible characters to the respective lists 1188 specified by the <tt/perm*/ options to be permitted 1189 during internal re-parses. The characters will 1190 however not be permitted in the initial parse of the input text. 1191<tag>--downgradables <sl/set/</tag> 1192 Additional permisible characters at the phone level. 1193 Whereas all of the <tt/perm*/ options must specify disjoint 1194 sets of characters for each language, this option typically 1195 consists of characters which are listed as permisible for 1196 higher levels than the phone level, too. The characters 1197 are parsed at the higher level if possible. If that would 1198 however constitute an empty suprasegmental unit (i.e. there 1199 are no preceding phones since the beginning of the text or 1200 since the last unit of the same or even higher level), 1201 the character will be parsed at the phone level at this 1202 particular occurence. This affects both the initial parse 1203 and later re-parses. 1204<tag>--charset <sl/charset/</tag> 1205 The character set to be used with the current language 1206 (especially in rules, voice configuration; also in text 1207 input and output through TTSCP). If an 8-bit encoding is not 1208 already known to Epos, it's loaded from a corresponding 1209 mapping file within the directory specified by the 1210 <ref id="unimapdir-option" name="unimap_dir"> option. 1211 Note that this option doesn't affect the encoding of the 1212 configuration file in which it has been set itself; 1213 see also the <ref id="encoding" name="Character Encoding"> 1214 subsection for more details. 1215 1216</descrip> 1217 1218<sect2> Voice Dependent Configuration 1219<p> 1220 1221<descrip> 1222<tag>--name <sl/voicename/</tag> 1223 This option assigns a name to a newly created voice. If there is no name 1224 specified, this option defaults to the configuration file name (from the 1225 last slash to the nearest dot) the configuration has been loaded from. 1226 The name is then used to refer to the voice in TTSCP. The voice name 1227 must begin with an alphabetical character and consist of alphanumerical 1228 characters (dashes and underscores are also allowed). 1229<tag>--type <sl/synthtype/</tag> 1230 The parameter, the speech synthesis type, is one of the following: 1231 <table loc="h"> 1232 <tabular ca="|l|l|"> 1233 <tt>none</tt> | voice is mute @ 1234 <tt>internet</tt> | voice uses a remote speech synthesizer using TCP/IP@ 1235 <tt>lpc-int</tt> | voice uses an LPC synthesizer (integer based)@ 1236 <tt>lpc-float</tt> | voice uses an LPC synthesizer (floating point based)@ 1237 <tt>lpc-vq</tt> | voice uses an LPC synthesizer (vector quantified)@ 1238 <tt>tdp</tt> | voice uses a time domain synthesizer@ 1239 <tt>mbrola</tt> | voice uses an external MBROLA synthesizer@ 1240 </tabular> 1241 </table> 1242 This option may influence other voice dependent options quite significantly, 1243 as some of them are speech synthesis type dependent. 1244<tag>--location <sl/[[voice][.language]@]hostname[:port]/ </tag> 1245 If this speech synthesis is of the <tt/internet/ type, 1246 this option can be used to set the hostname of the remote 1247 server. If the remote server is listening on a non-standard port number 1248 (currently the standard port is considered to be 8778), the 1249 host name may be followed by a colon and the port number 1250 requested. The desired remote voice and language may be optionally specified 1251 before the host name, separated with a <tt/@/ character 1252 from the host name and with a dot from each other. If a language name 1253 is specified, while a voice name is not, the language name should be 1254 preceded with a dot. 1255 The defaults for voice, language, and port number are 1256 remote default voice, local current language, and 8778, 1257 respectively. 1258 1259 For other synthesis types, this is a directory 1260 name which holds inventory related files (in the "inv" 1261 subtree), and is subject to normal file naming conventions, 1262 as described in <ref id="file-naming" name="file naming">. 1263<tag>--deadlock_timeout <sl/n/</tag> 1264 The value is a time interval in seconds. This option is meaningless 1265 for voices of type other then <tt/internet/. For remote voices, 1266 if the remote server is successfully connected to, but doesn't send 1267 any TTSCP session header (nor anything else) to the local server 1268 acting as a TTSCP client, it is either severely misconfigured, 1269 overloaded, deadlocked (e.g. tries to use itself as a remote 1270 server for its current voice), or communicating over a congested, unreliable 1271 or slow network connection. 1272 A value of <tt/0/ is actually a very small positive value and negative 1273 values are not accepted. 1274<tag>--n_segs <sl/n/ </tag> 1275 The total number of segments withing the segment inventory. 1276<tag>--models <sl/filename/</tag> 1277 The value is a file name. The file contains the segment inventory 1278 proper. Its format is speech synthesis type dependent. 1279<tag>--counts <sl/filename/</tag> 1280 The value is a file name. The file contains the lengths of individual 1281 segments in this segment inventory. 1282<tag>--dpt_file <sl/filename/</tag> 1283 The value is a file name. The file contains the symbolic segment names 1284 for user output; each consists of exactly three characters on a line 1285 (indented with spaces from the left if necessary). No blank lines 1286 nor comments are allowed. This file usually comes with a diphone 1287 inventory. 1288<tag>--codebook <sl/filename/</tag> 1289 The value is a file name. The file contains the code book for 1290 the vector quantified LPC speech synthesis (<tt/lpc-vq/ type only). 1291<label id="snlfile-option"> 1292<tag>--snl_file <sl/filename/</tag> 1293 The value is a file name. The file contains phone boundary information 1294 for individual segments in this segment inventory. Each line of the file 1295 contains three space-separated items: segment number, relative position 1296 within the segment (valued from 1 to 1024, e.g. 512 is the middle of the segment) 1297 and the character (phone representation) which is to be associated with 1298 the position. Lines not conforming to this specification are ignored. 1299 Currently, at most one label may be indicated for one segment, but it 1300 would be easy to get rid of this limit (at a cost of a few extra 1301 processor instructions). 1302 See also <ref id="labelphones-option" name="label_phones option">. 1303<tag>--init_f <sl/percentage/</tag> 1304 The auditory neutral integer value for the fundamental frequency. 1305 The typical value is 100. 1306<tag>--init_i <sl/percentage/</tag> 1307 The auditory neutral integer value for the volume. 1308 The typical value is 100. 1309<tag>--init_t <sl/percentage/</tag> 1310 The auditory neutral integer value for the prosodic duration of segments. 1311 The typical value is 100. Of course, it is segment length relative 1312 (some segments are longer than others), just as the <tt/init_f/ 1313 and <tt/init_i/ options are. 1314<tag>--channel <sl/channeltype/</tag> 1315 The parameter, the output channel type, is one of the following: 1316 <table loc="h"> 1317 <tabular ca="|l|l|"> 1318 <tt>mono</tt> | mono output signal @ 1319 <tt>left</tt> | stereo output signal, right channel is mute@ 1320 <tt>right</tt> | stereo output signal, left channel is mute@ 1321 <tt>both</tt> | stereo output signal, two identical channels@ 1322 </tabular> 1323 </table> 1324 This option may be used to simulate a dialogue by assigning 1325 different output channels to different speakers. 1326<tag>--inv_sampling_rate <sl/Hz/</tag> 1327 The sampling rate this segment inventory has been recorded at. 1328 The algorithms we use also imply that we use the same frequency 1329 for the synthesis. 1330<tag>--sample_size <sl/bits/</tag> 1331 Number of bits per sample. If some kind of a stereo output 1332 is turned on, this option sets the number of bits per channel. 1333 Again, this is related to the quality of recording of the 1334 segment inventory. We currently only support 8 and 16 bits. 1335<tag>--sampa_alternate <sl/name/</tag> 1336 For MBROLA voices, you can indicate non-standard SAMPA 1337 variants here; the value of <tt/SAMPA/ means the standard SAMPA; for voices 1338 where there is no SAMPA notation fixed yet, 1339 a different name should be used. The alternative SAMPA 1340 mapping to Unicode will be loaded from file 1341 <tt/sampa-alt-name.txt/ where <tt/name/ is specified by this 1342 parameter, or <tt/sampa-std.txt/ if it is specified as <tt/SAMPA/. 1343</descrip> 1344 1345 1346<sect2> Prosody Generation 1347<p> 1348 1349The options in this subsection control how the resulting per segment prosodic 1350information is assembled from the prosodic adjustments done to the 1351structural units by the rules. It actually controls the interpretation 1352of those adjustments themselves. 1353 1354<descrip> 1355<tag>--pros_weight* <sl/weight/</tag> 1356 The asterisk stands for a @-separated symbolic name of a linguistic description 1357 level, such as <tt/phone/, <tt/syll/ or <tt/word/. The parameter 1358 is an integer value primarily used for enabling (1) or disabling (0) 1359 certain levels of description when the total quantities for a segment 1360 are computed. It must however be understood that when some rules 1361 like <tt/smooth/ are applied, the prosodic values are distributed 1362 down to the target level of such a rule and cannot be distinguished 1363 anymore. If higher values than 1 are set, that will multiply the 1364 prosodic effect assigned to a level correspondingly. 1365<tag>--pros_eff_multiply_*</tag> 1366 The asterisk stands for a single letter, <tt/f/, <tt/i/ or <tt/t/, 1367 that is, a prosodic quantity symbol. This option controls how 1368 are the prosodic values for individual levels of description 1369 combined. If it is off, they are summed up (taking the corresponding <tt/pros_neutral_*/ 1370 as the baseline); if it is on, they get multiplied with each other 1371 (again taking <tt/pros_neutral_*/ as the neutral value). See <ref id="prosody" 1372 name="prosody modelling"> for more information and examples. 1373<tag>--pros_neutral_*</tag> 1374 The asterisk stands for a single letter, <tt/f/, <tt/i/ or <tt/t/, 1375 that is, a prosodic quantity symbol. This option controls what 1376 prosodic value is to be considered neutral for use in Epos. The current 1377 configuration file use 100 and prosodic adjustments are essentially 1378 percentages, but a higher value could be used for more fine grained 1379 prosody control (provided the synthesis algorithms can take advantage 1380 of it). 1381</descrip> 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393<!-- unselected options: 1394.cow, .loaded, .token_esc, .value_esc, .slash_esc, .use_segs, warnings, .input_text, 1395.sd_in, .sd_out, 1396--> 1397 1398 1399 1400 1401 1402 1403<sect2> File Naming <label id="file-naming"> 1404<p> 1405In Epos, most of the files ever opened are located in a single directory tree. 1406This tree usually starts at <tt>/usr/local/share/epos</tt>, but it can be changed at 1407configure time. For example, after issuing 1408 1409<tscreen> 1410<verb> 1411cd src 1412./configure --prefix=/usr/local 1413</verb> 1414</tscreen> 1415 1416and after recompiling and reinstalling Epos, the files will be searched under 1417<tt>/usr/local/lib/epos</tt>. See <tt>configure --help</tt> for more 1418details on configuring Epos. It is also possible to use the command 1419line option <tt>base_dir</tt> at Epos startup to change the 1420tree base without recompilation. Files of the same type -- and related 1421to the same language or voice, if applicable -- are located in the same subdirectory 1422by default. Thus, the path name actually used by Epos consists of the base directory 1423path, the subdirectory (or directory for short) and a relative file name. 1424This makes it possible to move either the whole configuration structure, or 1425a specific part of it, or a single file to another place. 1426 1427The relative file name may contain slashes (directory name separators). 1428If they only occur in the middle of the name, the file name is still 1429relative to the directory it would normally 1430be located in. However, if the file name begins with a slash or with <tt>./</tt>, 1431the file is treated as absolute or relative to the current working directory 1432of the Epos process, respectively. The second case is thus slightly unreliable, 1433but the first one allows to place any file in an arbitrary directory. 1434Likewise, if the directory name begins with a slash, it is not considered 1435to be relative to the base directory. 1436 1437Changing these options in run time does not immediately cause re-reading the 1438renamed files. All of the options in this section are <ref id="static" name="static"> 1439unless stated otherwise. 1440 1441<descrip> 1442<tag>--base_dir <sl/dirname/</tag> 1443 Only changeable on the command line. 1444 The value is an absolute directory name. This option can be used to 1445 change the location of the whole configuration structure, which can also be 1446 used for trying out Epos before installing it: 1447<tscreen> 1448<verb> 1449cd src 1450./eposd --base_dir ../cfg 1451</verb> 1452</tscreen> 1453 1454<label id="pseudorootdir-option"> 1455<tag>--pseudo_root_dir <sl/dirname/</tag> 1456 The value is a directory name. Sets the path prepended 1457 to any file name referenced in the TTSCP <ref id="strm-cmd" 1458 name="stream command">. This subtree cannot be escaped with 1459 cute parent-of-root paths, but you can use symlinks to arbitrary 1460 accessible parts of the kernel name space, again, without 1461 giving access to the rest of the file system. Write access 1462 to this subtree to any user except Epos effectively gives him 1463 the privilege to use the Epos file access rights anywhere 1464 in the system through creating a symlink to the absolute root directory. 1465 This option is not static. 1466<tag>--ini_dir <sl/dirname/</tag> 1467 The value is a directory name. Sets the path to language 1468 independent configuration files. This option is only changeable 1469 on the command line. 1470<tag>--fixed_ini_file <sl/filename/</tag> 1471 The value is a file name. This option can be used to change the file name 1472 of the <tt>fixed.ini</tt> file, which usually contains operating system 1473 independent, relatively fixed default global configuration. This option 1474 is only changeable on the command line. 1475<tag>--cfg_file <sl/filename/</tag> 1476 The value is a file name. This option can be used to change the file name 1477 of the <tt>epos.ini</tt> file. 1478<tag>--local_sound_device <sl/filename/</tag> 1479 The value is a file name. This option can be used to change the file name 1480 of the local sound card device. In many unices, 1481 setting this to <tt>/dev/dsp</tt> is the recommended way to actually hear 1482 Epos speak. Other unices don't have <tt>/dev/dsp</tt>, however. If the 1483 sound card has no file name at all, set this to the null device 1484 file name (that may be handled specially by the respective port of 1485 Epos). 1486<tag>--mbrola_binary <sl/filename/</tag> 1487 The file name of the mbrola executable file, either absolute 1488 or relative to the location of the voice configuration 1489 (which allows using different binaries with different 1490 voices, although this option is not voice dependent). 1491 Because of a limitation of the interface the binary is spawned 1492 by Epos every time it is needed and so this option is not static. 1493<tag>--input_file <sl/filename/</tag> 1494 The value is a file name. This option can be used to change the file name 1495 of the implicit input text used by the monolithic version of Epos. 1496 The value is language dependent. 1497<tag>--stddbg_file <sl/filename/</tag> 1498 The value is a file name. This option can be used to change the file name 1499 whereto various debugging output should be written. If not set at all, 1500 <tt/stdout/ will be used. 1501<tag>--stdshriek_file <sl/filename/</tag> 1502 The value is a file name. This option can be used to change the file name 1503 whereto output unrelated to the usual output should be printed. It includes 1504 especially error messages. 1505 1506<tag>--rules_dir <sl/dirname/</tag> 1507 The language dependent value is a directory name. 1508 The directory shall contain the rules file. 1509<tag>--hash_dir <sl/dirname/</tag> 1510 The language dependent value is a directory name. 1511 The directory shall contain any dictionaries used by the rules. 1512<tag>--input_dir <sl/dirname/</tag> 1513 The language dependent value is a directory name. 1514 The directory shall contain the implicit input text file for the 1515 monolithic version of Epos. 1516<tag>--lang_base_dir <sl/dirname/</tag> 1517 The value is a global directory name, not a language dependent one. 1518 It serves as the base directory for looking up the newly constructed 1519 languages. 1520<tag>--voice_base_dir <sl/dirname/</tag> 1521 The value is a global directory name, not a language dependent one. 1522 It serves as the base directory for looking up the newly constructed 1523 voices. It is however only used for configuration files, not 1524 for inventories. A language dependent subdirectory name is 1525 appended to it. 1526<tag>--inv_base_dir <sl/dirname/</tag> 1527 The value is a global directory name, not a language dependent one. 1528 It serves as the base directory for looking up inventories and 1529 related data. A voice dependent subdirectory name (the <tt/location/ 1530 option) is appended to it. 1531<label id="unimapdir-option"> 1532<tag>--unimap_dir <sl/dirname/</tag> 1533 The value is global directory name. It serves as the base 1534 directory for looking up mappings between individual character sets 1535 and the Unicode and also between SAMPA notation and Unicode. 1536<tag>--ttscp_help_dir <sl/dirname/</tag> 1537 The value is a directory name. In this directory, TTSCP help files 1538 for individual TTSCP commands and other help topics are located. 1539 The contents of these files is sent to the TTSCP control connection 1540 in reply to a corresponding <tt/help/ command. This option is not 1541 static. 1542<tag>--wav_dir <sl/dirname/</tag> 1543 The value is a global directory name. 1544 Any waveform files created by Epos without explicit directory 1545 specification will be created in this directory. 1546 Applies only to the monolithic Epos. 1547</descrip> 1548 1549 1550<sect2> Daemon Startup Options 1551<p> 1552 1553All options in this subsection are <ref id="static" name="static">. 1554They also usually have no effect if changed during run time; 1555change them in the configuration files instead and request Epos 1556<ref id="reinitialization" name="reinitialization">. 1557 1558<descrip> 1559<tag>--preload_voices</tag> 1560 When set, Epos tries to initialize the synthesizer 1561 configurations for all voices during the startup. 1562 This will cause unreachable remote voices and 1563 local voices without a speech inventory installed 1564 to disappear from the configuration. This option 1565 will cause a considerable increase in memory consumption or 1566 startup time in some cases. 1567<tag>--prefer_portaudio</tag> 1568 This option has no effect unless Epos has been compiled 1569 with the <tt>--enable-portaudio=yes</tt> option (a configure 1570 option, not an Epos option). Epos normally supports an 1571 unlimited number of OSS sound cards, one of them representing 1572 the <tt>#localsound</tt> TTSCP output module. With this 1573 option, Epos will use the PortAudio library for 1574 <tt>#localsound</tt> output instead. Using this option 1575 has adverse impact on some functionality, such as the <tt/intr/ 1576 TTSCP command. 1577<label id="daemon-log-option"> 1578<tag>--daemon_log <sl/filename/</tag> 1579 The value is a file name. This option can be used to set the file 1580 where various information about the Epos process is recorded. 1581 At the moment that is of little practical use except for debugging. 1582<tag>--syslog</tag> 1583 Log all TTSCP error messages with <tt>syslogd</tt>, if the syslog facility 1584 is available. Due to the internal design of Epos, some of these 1585 messages are never actually sent over TTSCP to anyone - for example, 1586 a fatal misconfiguration condition detected before the first client 1587 connects; but they're logged anyway. 1588<tag>--full_syslog</tag> 1589 Log all TTSCP completion messages with <tt>syslogd</tt>, if the syslog facility is 1590 available, including 1xx and 2xx class messages. 1591<label id="authpriv-option"> 1592<tag>--authpriv</tag> 1593 Log all security relevant TTSCP completion messages with the 1594 facility <tt/authpriv/ instead of <tt/daemon/. This includes 1595 messages concerning denial of access or incorrectly specified 1596 resource or password. In that case, the <tt/err/ message level 1597 is used instead of <tt/warn/. Notice that network errors 1598 are not affected by this option. 1599<tag>--log_codes </tag> 1600 When set, all TTSCP messages are preceded with their numeric codes 1601 as in TTSCP when logging using <tt/syslogd/. 1602<tag>--server_pwd_file <sl/filename/</tag> 1603 The value is a file name. This option can be used to force the server 1604 to store its internal password to a file. This password can then 1605 be used for TTSCP authentication in order to issue restricted commands 1606 such as <tt/down/. If the file can not be created, no error is reported. 1607<tag>--debug_password <sl/password/</tag> 1608 The value is a string. The string may be used instead of the server 1609 password. Use of this option usually makes TTSCP insecure 1610 and is discouraged. 1611<tag>--restr_file <sl/filename/</tag> 1612 The file named by this parameter provides access control in TTSCP to individual 1613 options. Its syntax is described <ref id="restricted-options" name="above">. 1614 This option can only be changed from the command line. 1615<tag>--listen_port <sl/port/</tag> 1616 The TCP port number where the daemon should be listening for incoming 1617 TTSCP connections. The daemon will check if no other service is already 1618 running on that port and refuses to run if the port is already occupied. 1619<tag>--local_only </tag> 1620 When this option is set, the daemon accepts no new connections on 1621 network interfaces except the localhost one. This way, only clients 1622 running on the same machine can connect to the server. If this option 1623 is not set, the server accepts new connections on all available 1624 interfaces. 1625</descrip> 1626 1627 1628<sect2> Debugging Options 1629<p> 1630 1631Various kinds of debugging information can be printed by Epos to standard 1632output. 1633The amount of it is configurable. Most debugging information is printed throughout 1634the code using the <tt/D_PRINT/ macro; other sources of debugging 1635information are not discussed in this subsection. The <tt/D_PRINT/ 1636macro takes three parameters: the <em/severity level/, the 1637<em/format string/ and additional parameters as implied by the format 1638string. The semantics is fully analogous to the <tt/printf/ family 1639of standard library functions with the additional condition that 1640only information whose severity level is sufficiently high under 1641current settings is printed. There is also a variant of the macro, 1642<tt/DO_PRINT/, which prints its message unconditionally. This 1643is useful for temporary promotion of individual debugging messages 1644without losing their standard severity levels. There is one more 1645variant, <tt/DBG/, which can be used for debugging printouts 1646which are not effectively handled by the <tt/printf/-style 1647function like dumping of arrays. 1648 1649Note also that <tt/#define DEBUGGING/ 1650must be enabled in <tt/interf.h/, else the debugging macros are ignored 1651altogether. 1652 1653The severity level may have one of these values: 1654 1655<table loc="ht"> 1656<tabular ca="|l|l|l|l|"> 1657<hline> 1658level | debugging messages | easy invocation | typical examples @ 1659<hline> 16603 | rare | -D | major events, warnings @ 16612 | normal | -DD | informative messages @ 16621 | verbose | -DDD | detailed debugging printouts @ 16630 | detailed | -DDDD | miscellaneous chaos @ 1664<hline> 1665</tabular> 1666<caption> 1667 Severity levels 1668</caption> 1669</table> 1670 1671Both options in this subsection are <ref id="static" name="static">. 1672 1673<descrip> 1674<tag>--debug</tag> 1675 This option must be <tt/on/ to provide any debugging information (except for 1676 daemon activity logging controlled by <ref id="daemon-log-option" 1677 name="the daemon_log option"> and syslog logging. 1678<tag>--debug_level</tag> 1679 The minimum severity level of debugging messages which should 1680 be printed. 1681</descrip> 1682 1683