Dec 20, 2005 - BOSS uses a MySQL RDBMS as the database server to store speech ... If you installed the MySQl database on a host different from the one you.
Bonn Open Synthesis System (BOSS) 3 Documentation and User Manual December 20, 2005 ¨ Broggelwirth, ¨ Stefan Breuer, Petra Wagner, Julia Abresch, Jorg Hannes ¨ Rohde and Karlheinz Stober
Contents 1 Introduction 1.1 History and Philosophy of BOSS . . . . . . . . . . . . . . . . 1.2 Credits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4 4 5
2 Compiling BOSS from source
7
3 Installing and Using BOSS 3.1 Prerequisites . . . . . . . . . . . . 3.2 Client-Server model . . . . . . . . 3.3 Installing BOSS binaries . . . . . . 3.4 Installing the database . . . . . . . 3.4.1 The BOSS configuration file
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
9 . 9 . 9 . 10 . 11 . 12
4 General Architecture of BOSS 4.1 The BOSS client . . . . . . . . . . . . . . . . . . . 4.1.1 Minimal server XML document . . . . . . . 4.2 The BOSS server . . . . . . . . . . . . . . . . . . . 4.2.1 Overview . . . . . . . . . . . . . . . . . . . 4.3 Structure of the BOSS server . . . . . . . . . . . . Text pre-processing and prediction modules BOSS UnitSelection . . . . . . . . . . . . . BOSS cost functions . . . . . . . . . . . . . Concatenation and Manipulation . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
14 14 15 15 15 16 17 18 19 20
A The BOSS directory structure
24
B BOSS configuration files
26
C BOSS DE C.1 XML-Elements and Attributes . . . . . . . . . . . . . . . . . . C.1.1 Schema definition of a BOSS DE server document . . C.1.2 Schema definition of a BOSS DE inventory document C.1.3 Attribute and element creation order . . . . . . . . . . C.2 Configuration files and command line options . . . . . . . . .
27 27 27 32 36 39
2
D The GNU General Public License 40 D.1 The BOSS FLOSS exception . . . . . . . . . . . . . . . . . . 48
3
Chapter 1
Introduction 1.1
History and Philosophy of BOSS
The Bonn Open Synthesis System (BOSS) is an architecture and software developed therefrom capable of producing synthetic speech. It was origi¨ nally developed by Karlheinz Stober. The goal of this software is to present developers of speech synthesis systems with an efficient and easy to expand software platform. The software excels especially at handling inventory elements of various sizes, such as words, syllables, phones and halfphones. BOSS uses a “non uniform unit selection”algorithm to select appropriate units from large corpora at runtime. It is conceived as a network application, which means that most of the synthesis procedure is hhandled by a BOSS server application that specialized clients can connect to in a standardized way. The BOSS system is free software under the GNU General Public License (GPL) with a special exception that allows software which is released under a GPL-incompatible license to be linked to by BOSS. It was developed in C++ on the GNU/Linux platform. ¨ BOSS is a further development of the synthesis concept of Verbmobil [Stober et al.,1999], ¨ [Stober et al.,2000]. As Verbmobil used a very specialized communication architecture employing a program called “testbed”which is not freely available, the first version of “BOSS”was developed in 2000. Just like Verbmobil, this software employed a blackboard architecture for internal communication. Data was held with the help of the GNU Data Base Manager (GDBM). Extended demands as well as problems with the flexibility of the blackboard and the database led to the development of the second version of BOSS, ¨ called BOSS II ([Klabbers et al.,2001a, Klabbers et al.,2001b, Stober, 2003]). BOSS II differed from the original BOSS development in its employment of freely available software tools and use of standardized data formats, such as XML. The database backend was replaced by MySQL. The current third major version of BOSS features compatibility to recent versions of GCC 4
(3.0 and above) and the Xerces XML parser (2.4 and above), as well as enhanced portability by making use of the GNU build tools (autoconf, automake and libtool) and increased modularity and configurability by using dynamic loading of modules and XML-based configuration files. By now, the following applications of BOSS exist: • Adaptation to Dutch by Esther Klabbers, Raymond Veldhuis, Mathijs ¨ Visser and Karlheinz Stober in 2001 ([Klabbers et al.,2001a]). • Adaptation to a directory enquiries front-end for klickTel GmbH by Julia Abresch and Stefan Breuer ([Breuer, Abresch, 2003, Hammerstingl, Breuer, 2003]) • Adaptation to Polish by Grazyna Demenko and Stefan Breuer ([Demenko, Grazyna 2003]) • Adaptation to British English in collaboration with Mark Huckvale (UCL) BOSS separates data and algorithms as much as possible. Therefore, it is easily possible to integrate and utilize various inventories. This separation is also the premise for the insertion of various languages. However, the use of languages other than the one originally intended requires modification of the algorithms. To make this portation as simple as possible, BOSS makes extensive use of object oriented programming. The developer who wants to port BOSS to a new language uses the transmission principle to integrate his required algorithms. This has to be done only in places requiring language specific modifications and is now facilitated by language-independent base classes which new modules can build upon. BOSS is a software platform which makes available elementary methods for the production of synthetic speech, thereby saving the developers time they can use for optimizing speech quality. BOSS is distributed with a fully functional German speech synthesizer (BOSS DE). Nevertheless, to adapt BOSS to languages other than German, developers will have to provide their own speech data as well as some language-specific synthesis modules.
1.2
Credits
¨ ¨ • BOSS server and libraries: Karlheinz Stober, Stefan Breuer, Jorg ¨ Broggelwirth, Philip Groß, Michal Holc´ık, Harald Ketzer, Mathijs Visser. • BOSS clients: Christian Weiß, Thilo Goldschmitz, Matthias Albrecht, ¨ Broggelwirth, ¨ Jorg Michal Holc´ık, Stefan Breuer.
5
• Corpora: Petra Wagner, Lioba Faust, Michael Mennen, Daniela Schwill, Julia Abresch, Nadja Holder, Amanda Wildner, Meike Paulson, Katja Carapezza, Harald Ketzer, Valeska Maus, Bianca Aschenberner, Wen¨ zel Borucki, Boris Glawe, Karlheinz Stober, Esther Klabbers, Stefan Breuer. • Website(s) and Sourceforge presence: Christian Weiß, Hannes Rohde, Michal Holc´ık, Stefan Breuer
6
Chapter 2
Compiling BOSS from source This chapter explains the steps to compile a working binary program from the BOSS source code. If you have a binary distribution and just want to use BOSS without changing the program, feel free to skip to 3 for usage instructions. BOSS uses the GNU Build tools to ensure portability. However, BOSS has been designed with a UNIX-like platform in mind, more specifically, GNU/Linux. Thus, to be able to compile BOSS, your system must at least support POSIX system calls, either natively (as SunOS, BSD and other Unix variants do) or through additional software (e.g. Cygwin for MS Windows). So far, BOSS has been successfully compiled on SuSE, RedHat, Gentoo and Ubuntu Linux, as well as on SunOS. See 3.1 for a list of libraries that are needed for compilation and execution of BOSS. To configure the source tree for compilation, BOSS uses the GNU autotools: • autoconf (http://http://www.gnu.org/software/autoconf/), • automake (http://http://www.gnu.org/software/automake/) and • libtool (http://http://www.gnu.org/software/libtool/). When all required packages have been installed, please extract the BOSS source distribution archive to a directory of your choice, e.g.: user@host:~/$ tar xfvz boss-3.0.0-2.tar.gz In the next step, the BOSS compilation process should be prepared with the commands user@host:~/boss-3.0.0-1/$ ./bootstrap user@host:~/boss-3.0.0-1/$ ./configure If you are a developer of BOSS, you might want to install BOSS to a different location than the default /usr/local. In that case, use: 7
user@host:~/boss-3.0.0-1/$ ./configure --prefix=’desired_location’ ,then user@host:~/boss-3.0.0-1/$ ./export LD_LIBRARY_PATH ‘‘desired_location’’ to point to a directory that is not in the library search path. After these commands have completed successfully, compilation of the BOSS package can then be initiated with user@host:~/boss-3.0.0-1/$ make Depending on the configuration of your machine, the compilation process for the whole package can take several minutes. In case you want to repeat the compilation after changing your system (e.g. by upgrading libraries), it is good practice to clean up any possible remains from earlier compilations by executing user@host:~/$ make clean The last step - the installation of the compiled BOSS package - requires root privileges, so make you sure you have all permissions (i.e. by logging in as root or by prefixing the command with sudo): user@host:~/boss-3.0.0-1/$ make install If you want to remove the BOSS installation from your system at a later point, you can reverse the steps of ’make install’ by executing user@host:~/$ make uninstall This step - just like ’make install’ - requires root privileges, so again make sure to either log in as root or to use sudo if you are logged in as an unprivileged user.
8
Chapter 3
Installing and Using BOSS If you want to install BOSS from the source distribution, please refer to 2 first.
3.1
Prerequisites
For all language versions of BOSS on GNU/Linux, the following software has to be installed on the target system: • the MySQL database system, version 4.1 or higher (http://www. mysql.com), part of most Linux distributions, • the MySQL client libraries, version 4.1 or higher (http://www.mysql. com), these should come with the database package, • the Xerces-C XML parser library, version 2.4 or 2.5 (http://xml. apache.org/xerces-c/) • a recent version of Flex/Bison (http://dinosaur.compilertools. net/, successfully tested with version 1.2 of bison) Depending on your distribution or OS, additional libraries may be needed.
3.2
Client-Server model
BOSS uses a distributed architecture that splits the task of speech synthesis into a light-weight client that has low computational and memory requirements, and a centralized server that can offer synthesis service in several languages to several clients. To get a working BOSS environment, three working roles have to be assigned:
9
• BOSS client: The machine running the boss client program • BOSS server: The machine running the boss server program; this machine also stores the speech inventory data • Database server: The machine running the MySQL-server with the language-dependend databases for BOSS. All of these tasks can be performed by one machine, which results effectively in a self-contained synthesis system, or the tasks can be assigned to up to three separate machines communicating over a network connection.
3.3
Installing BOSS binaries
If you do not want to compile your own binary code from the BOSS source tree (see 2), you can also install the BOSS programs from a BOSS binary distribution. Currently, a binary distribution is provided for the Linux/i586 platform. Two variants of the binary distribution exist: • boss-#.#.#-#.i586.rpm - containing the whole BOSS package consisting of boss server, boss client and several tools for creation or modification of a speech corpus (see ??). • ll boss client-#.#.#-#.i586.rpm - containing only the boss client software. In order to run the client, you will also need language specific data files (see below). In both cases, #.#.#-# denotes the software version of the package. To install a binary package, you should use the rpm package manager with the -i option, e.g.: rpm -i boss-3.0.0-2.i586.rpm or respectively rpm -i de_boss_client-3.0.0-2.i586.rpm The binaries will be installed to the directory /usr/local/bin/, the documentation will be put in the appropriate subdirectory below /usr/share/doc/packages/.
10
3.4
Installing the database
BOSS uses a MySQL RDBMS as the database server to store speech corpus (voice) annotations. You have to install the database file for your language and set up a MySQL user (not a system user) to be able to run BOSS. The language-dependent MySQL database file is contained in the file ll spkr database #.#.#-#.tar.gz, where ll designates the language (i.e. ’de’), spkr designates the voice (i.e. ’lioba b’) and #.#.#-# designates the version number, respectively. This archive should be extracted to your MySQL database directory on the database server, e.g.: user@db-host:/var/lib/mysql/$ tar xfvz de_lioba_b_database_1.0.0-1.tar.gz After the archive has been extracted, you should change the ownership of the newly created directory and the files contained therein to the mysql account on your database machine (usually called ’mysql’), e.g.: user@db-host:/var/lib/mysql/$ chown -R mysql boss_de_lioba_b As the next step, a MySQL user has to be configured for the BOSS server. This can be accomplished with various graphical front-ends or with the standard administration tool mysql contained in the MySQL package 1 . First, you need to start the administration tool via the command: user@db-host:~/$ mysql --user=root -p You can check if the BOSS database has been installed correctly by entering the command mysql> SHOW databases; The list of databases displayed in response should contain the BOSS database, e.g. boss de lioba b for the German language version. If the BOSS database can not be installed in the manner described above, you can also use the database dump provided in the file boss de lioba b database #.#.##.tar.gz. The extracted .sql file can be imported into your MySQL database via the SOURCE command, e.g.: mysql> SOURCE ~/boss/boss_de_lioba_b.sql After the database has been installed successfully, create a user boss with password boss and access to the boss database, e.g.: mysql> GRANT ALL on boss_de_lioba_b.* to ’boss’@’boss-server’ identified by ’boss’; 1
If the MySQL server is not installed on your system or you have not set up a MySQL root user, please refer to http://dev.mysql.com/doc/refman/4.1/en/installing.html for information on how to do this.
11
For boss-server, the name of the machine running the boss server should be substituted; you can also replace host with ’%’ to allow access from all machines or with ’localhost’ to allow only local connections. Then, leave the MySQL administration tool: mysql> quit The language-specific data for the de lioba b database-#.#.#-#.tar.gz BOSS client is stored in the rpm file ’ll client data-#.#.#-#.rpm’, where ll stands for the chosen language and #.#.#-# is the version number. It can be installed to the client machine via the command ’rpm -i’, e.g.: user@boss-client:~/$ rpm -i de_client_data-1.0.0-1.rpm The rpm will be installed to the directory /usr/local/share/boss3/client/ll on the client machine, with ll standing for the selected language. On the server machine, two rpm packages with the speech data inventory (ll spkr inventory#.#.#-#.rpm) and the speaker-dependent runtime data (ll spkr runtime-#.#.##.rpm) have to be installed in the same manner: user@boss-server:~/$ rpm -i de_lioba_inventory-1.0.0-1.rpm user@boss-server:~/$ rpm -i de_lioba_b_runtime-1.0.0-1.rpm This will install the data to the directory /usr/local/share/boss3/data/ll/spkr on the server machine, with ll denoting the language and spkr denoting the name of the voice. To start the boss server process, run the following command on the server machine: user@host:boss_dir/synthesis/boss_server/$ boss_server [-p port] [-h db_server] & With the default settings, the BOSS server uses tcp port 2050 to communicate with the client. If you want to use a different port, start the server with the optional argument -p and the desired port number. If you installed the MySQl database on a host different from the one you are running boss server on, you must also supply the -h option. Once the server is running, you can test BOSS by invoking the BOSS client:
user@host:boss_dir/synthesis/boss_client/$ echo "Dies ist ein Test." | boss_client Be sure to substitute the correct name of your server for host and to pass the correct port numer if a non-standard setting for the server is used.
3.4.1
The BOSS configuration file
If your database username and password are both “boss” and the boss software is installed on the same system as the database2 , there is probably no 2
The server address is set to “localhost” by default. In some cases, though, the IP address of a real network interface on the server has to be used to avoid access problems.
12
need to adapt the configuration file. If you need to change the configuration, create a subdirectory .boss3 in your home directory and copy the file /etc/boss3/boss3conf.xml there. Check the -u, -p and -h options in appendix C.2 and set them according to your local configuration. Instead of changing the config file, you can also supply these options on the commandline each time you start the BOSS server.
13
Chapter 4
General Architecture of BOSS 4.1
The BOSS client
The division of BOSS into a (network) server and client may at first seem complicated, however, this concept gives the user a great deal of freedom in using the server and allows BOSS synthesis even on computers with limited resources. In addition, it easily allows work across different operating systems as only a client for a certain operating system is required. The BOSS client is not actually a program but an application programming interface (API) used to communicate with the BOSS server. However, as an example for an API, a client suitable for German text-to-speech (TTS) with BOSS DE is included in the BOSS distribution. As a BOSS client is in many cases defined specifically for certain applications, the responsibility for developing the client lies mainly with the developer creating a new application for BOSS. The central task of the BOSS client is creating an XML document to represent the orthographic text. Depending on the application, the client input may differ. While, for instance, a TTS system receives mainly processed text as input, weather information by phone, for example, could be based on tabular measurement data. The translation of these data into the required XML document can be done directly by the client. The client can also generate information specific to the application and make it available to the server. For example, if the transcription is already known to the client, the XML document sent to the server can contain this information. In this case, the applicable server module remains inactive and the utterance is produced with the segmental structure generated by the client.
14
4.1.1
Minimal server XML document
The client sends an XML document to the server. This document contains at least the orthographic representation of the text to be synthesized and its sentence structure. Text example: Guten Tag Herr Muller. Wie geht es Ihnen heute? ¨ XML document: ¨
4.2
The BOSS server
¨ (Karlheinz Stober)
4.2.1
Overview
The BOSS server is the core of the synthesis system. It is structured in modular form to enable integration of new functions at any time. Every module uses the same XML vocabulary as an interface to store, retrieve and pass on information. This is realized by means of the XML Document Object Model. Thus, two important criteria of software development are fulfilled:
15
• large portions of the software are usable in other applications • individual functions can be exchanged and tested without influencing the rest of the software. A function of the server is also called a module. Every module is structured according to the same pattern. Its input is a sentence coded in XML. The module then adds its output to the XML document (i.e. the transcription of given orthography). At the same time, data already present in the XML document is taken into account. If, for instance, transcription information has been inserted at an earlier stage before the transcription module was called, this information would not be overwritten. This guarantees that information made available by the client is utilized in the production of the synthetic signal. The selection of units in BOSS follows the procedure employed in Verbmobil. The primary element of synthesis is the word. The next smaller unit is switched to only when words are not available or the attributes of a given word prevent its use as an element of synthesis. This is currently the syllable. Again, there is a unit smaller than the syllable: the phone, and below that, optionally, the half-phone . The selection of elements first executes a preselection over all unit sizes (if necessary). The elements found in the preselection are then used in the final selection, which uses cost functions to determine the best candidates. The above strategy makes the selection of elements very efficient and lets it be applied to very large inventories.
4.3
Structure of the BOSS server
The BOSS server can roughly be divided into three functional units. • Classes/Modules for text pre-processing and prediction of prosody (e.g.BOSS Transcription and BOSS Duration) • The Unit Selection class/module (BOSS UnitSelection) • Classes/Modules for signal processing and concatenation (BOSS Concat and BOSS OLA) Regardless of their function, all modules are based on the same base class BOSS Module. That way, modules can be loaded dynamically and reconfiguration and exchange of modules can be performed without recompilation of the server source code. Built on top of the base class 16
are generic, language-independent classes for specific tasks, such as the BOSS Transcription class. While not being truly abstract, these classes cannot be used on their own to perform actual tasks in the synthesis process, but rather provide interfaces and algorithms for developers to create their own language- or task-specific classes. The German BOSS version, for instance, uses a module BOSS Transcription DE based on the generic transcription class. The program sequence of the BOSS server is controlled by the BOSS Synthesis class (module scheduler). This class loads the modules for all inventories defined in the configuration file and calls them in the appropriate order. The BOSS Synthesis class overloads the operator for function calls. This operator receives as input a subtree of the DOM delivered by the XML parser as a single argument. The subtree represents a single sentence to be synthesized. Within the function operator, the function operators of the classes used for synthesis, which are overloaded as well, are called in the required sequence. Every one of these calls contains the subtree of the DOM as a reference argument. This reference is manipulated and subsequently available for further processing. Every class used in synthesis makes available a function operator for a subtree of the DOM. Text pre-processing and prediction modules The classes for text pre-processing and prosody prediction add symbolic information by manipulating the elements of the currently processed DOM class.
Up to the UnitSelection, new attributes or new elements are inserted into the partial document. An attribute consists of a tuple of two strings. The first string gives the name of the attribute, the second its value. An attribute is, for instance, the canonical transcription of a word or the desired length of a phone. New elements are inserted especially in the transcription module as the sequence of syllables and phones is determined here. An element consists of a designator (tag), a set of attributes, a set of subordinate elements, also called children, as well as several other data elements which, however, are currently not used in BOSS. The UnitSelection now connects the desired data described in the partial document with the data present in the inventory. To this end, the database is searched for the available elements and through an assessment proce-
17
dure, a sequence of elements is determined that approximates the desired utterance as closely as possible. The data thus acquired are integrated into the partial document. This is done via the DOM Userdata class. BOSS UnitSelection The UnitSelection is the subject of research and therefore prone to frequent modification. Accordingly, only a few fundamental structures are presented here. Basically, the UnitSelection consists of two levels. The first level selects the available elements according to the desired segmental structure (preselection). The smallest selectable elements are determined by the currently used inventory contained in the database. At this time, the smallest elements are half-phones. It can be observed that the more connected elements are found in the database, the closer a sequence of elements approximates the desired utterance. This implies a special procedure in the database query. First, the database is searched for elements of the size of whole words. Only when a word is not found or if the desired sequence of elements is not satisfactorily produced from the attributes of the available words does the query continue on the next lower level, the syllable. The same strategy is employed in the transition from syllable to phoneme, and from phoneme to half-phone. It should be noted that for every desired element, a number of possible candidates is available. After all elements required for the production of the segmental structure have been found, those elements are selected which produce the desired utterance as well as possible. The sequence of candidate elements can simply be interpreted as a graph. To this end, the candidate elements are taken as nodes of a graph. Edges are inserted between candidate elements, which succeed each other in the preorder run. The resulting graph does not yet represent all attributes desirable for the finally selected sequence of elements. Therefore, the graph is modified once more. Every node containing phonemes voiced at element boundaries is divided into one and two nodes, respectively. Subsequently, edges are inserted to all succeeding elements agreeing in segmental context. Because of the temporal order on which every speech signal is based, there exists a canonical direction of the edges of the graph, apparent as well from the preorder run of the partial document. Every path from the starting node to the end node of the graph represents a possible solution to the synthesis problem. The task of the second level of the UnitSelection is the selection of the one path which is closest to the desired utterance.
18
To this end, the edges of the graph are assigned values which state how closely the elements connected by a particular edge approximate the desired utterance. On the basis of this estimation, one path of all possible paths of the graph is selected whose estimate sum is minimal. BOSS cost functions The values assigned to the edges of the previously outlined unit graph are a numeric description of the costs for the selected units and their combination. In BOSS, these costs are basically determined by two different types of cost functions, namely unit cost and transition cost. The former measures the distance between an actual unit in the unit graph and the corresponding target unit. The latter describes the quality of the transition between two adjacent units in the unit graph. How the actual cost functions work in detail and what share of the total cost they have, has to be defined by the developers of the synthesis system themselves. BOSS expects the transition cost functions to be called within the overloaded function operator of the Cost class with two arguments (left BOSS Node, right BOSS Node), whereas the unit cost functions have to be called within the overloaded function operator with one argument (current BOSS Node). float Cost::operator () (const BOSS Node & l, const BOSS Node & r) const double Cost::operator () (const BOSS Node & u) const
An example for such a cost function is the unit cost function which evaluates the predicted unit durations already included as attributes in the XML document. double Cost::duration cost(const BOSS Node & u) const This cost function compares the duration information (implicitly) given by the current BOSS Node with the relevant information in the XML document. To access an attribute’s predicted value in the XML document, the BOSS utility library provides the function getAttrByName. string getAttrByName(const DOM Node & element, const DOMString & key); The first argument of this function is the current DOM Node, the second one is a DOMString representing the name of the relevant attribute, e.g. “Dur”for the predicted duration of a particular (sub-)unit in the transcription 19
string (WORD, SYLLABLE, PHONE, HALFPHONE). The attribute’s value is returned as a string. If the developers of the cost functions want to include more than one unit cost function or transition cost function respectively in the corresponding function operators, they have to sum up the single results of each cost function within the same type of cost function. The reason for this is that the two different operators can only return one value each. Thus, unit cost and transition cost both are the sum of their partial costs. Like with the other modules, the classes for costs and nodes contained in the UnitSelection class are generic and can be used a basis for own cost definitions. Concatenation and Manipulation BOSS provides a class BOSS ConCat for the retrieval, concatenation and manipulation of the units selected by BOSS Unitselection. At present, this class contains a method to query the name of each file that contains a selected unit from the database, a method to create silent passages to be used as pauses, the capability to apply spectral smoothing at segment boundaries and to concatenate the sequence of units. Another class, BOSS OLA provides time-domain manipulation of pitch and duration.
20
Bibliography [Breuer et al.,2001]
B REUER , S.; A BRESCH , J.; WAGNER , P.; ¨ S T OBER , K. (2001): “BLF – ein Labelformat fur ¨ die maschinelle Sprachsynthese mit BOSS II.” in: ¨ Hess, W., Stober, K. (Hrsg.), Tagungsband Elektronische Sprachsignalverarbeitung ESSV’2001, Studientexte zur Sprachkommunikation, Bonn.
[Breuer, Abresch, 2003] B REUER , S.; A BRESCH , J. (2003): “Unit Selection Speech Synthesis for a Directory Enquiries Service.” in: Proceedings of the (ICPhS). Barcelona. [Breuer, Abresch, 2004] B REUER , S.; A BRESCH , J. (2004): “Phoxsy: Multi-phone Segments for Unit Selection Speech Synthesis.” in: Proceedings of the International Conference on Spoken Language Processing (ICSLP). Jeju. [Abresch, Breuer 2004a] A BRESCH , J.; B REUER , S. (2004): “Assessment of Non-native Phones in Anglicisms by German Listeners.” in: Proceedings of the International Conference on Spoken Language Processing (ICSLP). Jeju. [Demenko, Grazyna 2003] D EMENKO, G. (2003): “Continuous Speech Synthesis System Based on the Concatenation of Polish Phonetic-Acoustic Segments.” in: Speech Analysis, Synthesis and Recognition in Technology, Linguistics and Medicine. Materialy Konferencji Naukowej. Szczyrk. [Abresch, Breuer 2004b] A BRESCH , J.; B REUER , S. (2004): “UnitSelection-Sprachsynthese fur die Tele¨ fonauskunft.” IKP-Arbeitsberichte, Neue Folge, 9. http://www.ikp.uni-bonn.de/ikpab/ 21
[Hammerstingl, Breuer, 2003] H AMMERSTINGL , R.; B REUER , S. (2003): “Evaluation eines Sprachsynthesesystems nach dem Prinzip der Nonuniform Unit Selection.” in: Tagungsband Elektronische Sprachsignalverarbeitung (ESSV). Karlsruhe. [Hammerstingl, Breuer, 2004] H AMMERSTINGL , R.; B REUER , S. (2004): “Evaluation eines Sprachsynthesesystems nach dem Prinzip der Non-Uniform Unit Selection.” IKPArbeitsberichte, Neue Folge, 10. http://www. ikp.uni-bonn.de/ikpab/ [Klabbers et al.,2001a]
¨ K LABBERS , E.;S T OBER (2001). “Creation of speech corpora for the multilingual Bonn Open Synthesis System.” 4th ISCA Tutorial and Research Workshop on Speech Synthesis, Pitlochry, Scotland, p23-27
[Klabbers et al.,2001b]
¨ K LABBERS , E.;S T OBER , K.;V ELDHUIS , R.;WAGNER , P.;B REUER , S. (2001): “Speech synthesis development made easy: The Bonn Open Synthesis System.” in: Proceedings of Eurospeech. Aalborg.
¨ ¨ [Schroder, Breuer, 2004] S CHR ODER , M.; B REUER , S. (2004): “XML Representation Languages as a Way of Interconnecting TTS Modules.” in: Proceedings of the International Conference on Spoken Language Processing (ICSLP). Jeju. ¨ [Stober et al.,1999]
¨ P ORTELE , T., S T OBER , K.: Domain-specific prominence-based concatenation Invited Talk, FORUM ACUSTICUM 1999, (Berlin, 1999)
¨ [Stober et al.,2000]
¨ S T OBER , K., WAGNER , P., H ELBIG , J., ¨ K OSTER , S., S TALL , D., T HOMAE , M., B LAUERT, J.,H ESS , W., H OFFMANN , R., M AN GOLD, H.: “Speech Synthesis by Multilevel Selection and Concatenation of Units from Large Speech Corpora.” in: Wolfgang Wahlster [ed.]: Verbmobil: Foundations of Speech-to-Speech Translation Symbolic Computation, Springer, (Berlin,2000), pp. 519-537.
22
¨ [Stober, 2003]
¨ S T OBER , K. Bestimmung und Auswahl von Zeitbereichseinheiten fur ¨ die konkatenative Sprachsynthese. Lang.
[Wagner et al.,1999]
¨ WAGNER , P.; H AAS , F.; S T OBER , K.; H ELBIG , J. (1999): “Multilinguale korpusbasierte Sprach¨ synthese auf der Basis domanenspezifischen Ausgangsmaterials.” in: Mehnert, D. (Hrsg.) Tagungsband Elektronische Sprachsignalverarbeitung ESSV 1999, Studientexte zur Sprachkom¨ munikation, Gorlitz, Heft 16, pp. 152-159.
23
Appendix A
The BOSS directory structure • boss: BOSS root directory – boss/bin: contains the compiled binaries (tools and synthesis software). – boss/data: contains the speech signals, label files and data files read at runtime. ∗ boss/data/bossdb: contains the MySQL databases for the different languages. · boss/data/bossdb/de: contains the databases for the German version of BOSS. ∗ boss/data/inventories: speech signal and label files for the languages used. · boss/data/inventories/de: contains the speech signal corpora for the German version of BOSS ∗ boss/data/runtime: data files read at runtime, such as CART trees for duration prediction. · boss/data/runtime/de: contains the configuration files for the German version of BOSS ∗ boss/data/sql: The SQL files used for database creation. · boss/data/sql/de: contains SQL files for setting up the databases for the German version of BOSS ∗ boss/data/xsd: Schema files that describe the XML format(s) used by BOSS – boss/libraries: BOSS libraries and external libraries used. ∗ boss/libraries/include: all library directories have to be linked in this folder to ensure proper compilation ∗ boss/libraries/lib: the static library files are placed here. 24
∗ boss/libraries/tdsp: a template DSP library. ∗ boss/libraries/xml4c: these libraries implement the DOM used throughout the BOSS system ∗ boss/libraries/mysql: the class boss mysql needs these libraries to access the annotation database. – boss/synthesis: BOSS client and server development trees. – boss/tools: Tools for corpus (inventory) annotation. ∗ boss/tools/blf2xml: converts label files in blf format into xml files. ∗ boss/tools/addcontext: a tool for adding the phoneme and syllable contexts to the XML structure of the label file. ∗ boss/tools/addphrases: adds phrasing information to phoneme and syllable levels. ∗ boss/tools/alignflag: adds an Align attribute to PHONEME and SYLLABLE tags. ∗ boss/tools/optbounds: shifts all segment boundaries to the nearest zero crossing. ∗ boss/tools/melbounds: calculates the mel cepstrum coefficients needed for unit selection. ∗ boss/tools/blfxml2db: imports fully annotated xml label files into the MySQL database. ∗ boss/tools/traing2p: used for the training of syllable, stress and transcription trees for grapheme-to-phoneme conversion (in boss g2p). ∗ boss/tools/addf0: adds F0 and RMS values to the XML structure
25
Appendix B
BOSS configuration files
26
Appendix C
BOSS DE C.1
XML-Elements and Attributes
As described before, BOSS uses two very similar XML vocabularies to describe an utterance. One is the server document, which contains all kinds of information that can be predicted for a given text by the various synthesis modules. It is generated by the client (see 4.1.1). The other one is the inventory document which describes the utterance contained in a single speech signal file of the corpus. Both document types are explained here by means of XML schema definitions, which are also the main reference for the elements and attributes used by BOSS.
C.1.1
Schema definition of a BOSS DE server document
The following XML schema describes the structure of a BOSS server XML document. This file can be found under data/xsd/boss de-server.xsd in the BOSS directory structure. An example of a simple document of this type can be found in section 4.1.1. XML Schema for BOSS II (DE) server documents. This version is for German BOSS systems using the classes provided with the BOSS DE distributions . $Revision: 1.9 $ $Date: 2003/12/22 08:09:17 $ Copyright (C) 2003 University of Bonn (IKP). Authors: Tim Schroeder, Stefan Breuer
27
This attribute is set and used by the class boss duration de −−> < xsd:restriction base=”xsd:string”> < xsd:restriction base=”xsd:string”> < xsd:restriction base=”xsd:string”> < xsd:restriction base=”xsd:positiveInteger”> < xsd:restriction base=”xsd:nonNegativeInteger”>
28
29
30
31
C.1.2
Schema definition of a BOSS DE inventory document
The following XML schema describes the structure of a BOSS inventory XML document. This file can be found under data/xsd/boss de-inventory.xsd in the BOSS directory structure. XML Schema for BOSS II (DE) inventory annotation documents (derived from BLF label files) . This version is for German BOSS systems using the classes provided with the BOSS DE distributions . $Revision: 1.2 $ $Date: 2003/12/22 08:09:17 $ Copyright 2003 University of Bonn (IKP). Authors: Stefan Breuer < xsd:restriction base=”xsd:string”> < xsd:restriction base=”xsd:string”> < xsd:restriction base=”xsd:string”>
32
< xsd:restriction base=”xsd:positiveInteger”> < xsd:restriction base=”xsd:nonNegativeInteger”>
33
Added by blf2xml. −−>
34
35
C.1.3
Attribute and element creation order
The following list describes the XML structures that are created or required by the various synthesis modules: • boss client: 36
– Requires: — – Creates: ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗
TEXT elements SENTENCE elements WORD elements Type attributes (for SENTENCE elements) Orth attributes (for WORD elements) PMode attributes (do.) PInt attributes (do.) Dur attributes (for WORD elements, if TKey=”$p”)
• boss server – Requires: ∗ SENTENCE elements ∗ WORD elements – Creates: ∗ SentenceID attributes (for SENTENCE elements) ∗ TargetPath attributes (do.) ∗ TargetFile attributes (do.) • boss transcription: – Requires: ∗ SENTENCE elements ∗ WORD elements ∗ Orth attributes (for WORD elements) – Creates: ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗
SYLLABLE elements PHONE elements HALFPHONE elements TKey attributes (for WORD, SYLLABLE, PHONE and HALFPHONE elements) CLeft attributes (do.) CRight attributes (do.) CLeft2 attributes (do.) CRight2 attributes (do.) CCLeft attributes (do.) CCRight attributes (do.) CCLeft2 attributes (do.) 37
∗ CCRight2 attributes (do.) • boss duration: – Requires: ∗ SENTENCE elements ∗ WORD elements ∗ SYLLABLE elements ∗ PHONE elements ∗ HALFPHONE elements ∗ TKey attributes (for PHONE elements) ∗ CLeft2 attributes (do.) ∗ CRight2 attributes (do.) – Creates: ∗ Dur attributes (for WORD, SYLLABLE, PHONE and HALFPHONE elements) • boss unitselection: – Requires: ∗ SENTENCE elements ∗ WORD elements ∗ SYLLABLE elements ∗ PHONE elements ∗ HALFPHONE elements ∗ all attributes used by preselection or in cost functions – Creates: ∗ USERDATA structure (for selected elements) • boss conman – Requires: ∗ SENTENCE elements ∗ WORD elements ∗ SYLLABLE elements ∗ PHONE elements ∗ HALFPHONE elements ∗ USERDATA structure (for selected elements) ∗ Dur attributes (for WORD elements, if TKey=”$p”) ∗ SentenceID attributes (for SENTENCE elements) ∗ TargetPath attributes (do.) ∗ TargetFile attributes (do.) – Creates: — 38
C.2
Configuration files and command line options
39
Appendix D
The GNU General Public License Version 2, June 1991 c 1989, 1991 Free Software Foundation, Inc. Copyright 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software—to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation’s software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must 40
make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author’s protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors’ reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone’s free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow.
T ERMS AND C ONDITIONS F OR C OPYING , D ISTRIBUTION AND M ODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The “Program”, below, refers to any such program or work, and a “work based on the Program” means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term “modification”.) Each licensee is addressed as “you”. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program’s source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. 41
You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: (a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. (b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. (c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.
42
3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: (a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, (b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machinereadable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, (c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
43
5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients’ exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.
44
8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and “any later version”, you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.
N O WARRANTY 11. B ECAUSE
THE PROGRAM IS LICENSED FREE OF CHARGE , THERE IS
NO WARRANTY FOR THE PROGRAM , TO THE EXTENT PERMITTED BY APPLICABLE LAW.
E XCEPT
WHEN OTHERWISE STATED IN WRITING
THE COPYRIGHT HOLDERS AND / OR OTHER PARTIES PROVIDE THE PRO GRAM “ AS IS ” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING , BUT NOT LIMITED TO, THE IMPLIED WAR RANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PUR POSE .
T HE
ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF
THE PROGRAM IS WITH YOU.
S HOULD
THE PROGRAM PROVE DEFEC -
TIVE , YOU ASSUME THE COST OF ALL NECESSARY SERVICING , REPAIR OR CORRECTION .
12. I N
NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO
IN WRITING WILL ANY COPYRIGHT HOLDER , OR ANY OTHER PARTY
45
WHO MAY MODIFY AND / OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE , BE LIABLE TO YOU FOR DAMAGES , INCLUDING ANY GEN ERAL , SPECIAL , INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM
( INCLUDING
BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INAC CURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAIL URE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS ), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES .
E ND OF T ERMS AND C ONDITIONS
Appendix: How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the “copyright” line and a pointer to where the full notice is found. one line to give the program’s name and a brief idea of what it does. Copyright (C) yyyy name of author This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
46
Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) yyyy name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type ‘show w’. This is free software, and you are welcome to redistribute it under certain conditions; type ‘show c’ for details. The hypothetical commands show w and show c should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than show w and show c; they could even be mouse-clicks or menu items—whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a “copyright disclaimer” for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program ‘Gnomovision’ (which makes passes at compilers) written by James Hacker. signature of Ty Coon, 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License.
47
D.1
The BOSS FLOSS exception
The University of Bonn, IKP Exception for Free/Libre and Open Source Software-only Applications used with the Bonn Open Synthesis System (the ”BOSS FLOSS Exception”). Exception Intent We want specified Free/Libre and Open Source Software (”FLOSS”) applications to be able to use specified GPL-licensed MySQL client libraries (the ”Program”) despite the fact that not all FLOSS licenses are compatible with version 2 of the GNU General Public License (the ”GPL”). Legal Terms and Conditions As a special exception to the terms and conditions of version 2.0 of the GPL: You are free to distribute a Derivative Work that is formed entirely from the Program and one or more works (each, a ”FLOSS Work”) licensed under one or more of the licenses listed below in section 1, as long as: 1. You obey the GPL in all respects for the Program and the Derivative Work, except for identifiable sections of the Derivative Work which are not derived from the Program, and which can reasonably be considered independent and separate works in themselves, 2. all identifiable sections of the Derivative Work which are not derived from the Program, and which can reasonably be considered independent and separate works in themselves, 1. are distributed subject to one of the FLOSS licenses listed below, and 2. the object code or executable form of those sections are accompanied by the complete corresponding machine-readable source code for those sections on the same medium and under the same FLOSS license as the corresponding object code or executable forms of those sections, and 3. any works which are aggregated with the Program or with a Derivative Work on a volume of a storage or distribution medium in accordance with the GPL, can reasonably be considered independent and separate works in themselves which are not derivatives of either the Program, a Derivative Work or a FLOSS Work. If the above conditions are not met, then the Program may only be copied, modified, distributed or used under the terms and conditions of the GPL or another valid licensing option from University of Bonn, IKP. 1. FLOSS License List License name Version(s)/Copyright Date Academic Free License 2.0 Apache Software License 1.0/1.1/2.0 Apple Public Source License 2.0 Artistic license From Perl 5.8.0 BSD license ”July 22 1999” Common Public License 1.0 GNU Library or ”Lesser” General Public License (LGPL) 2.0/2.1 Jabber Open Source License 1.0 MIT License (As listed in file MIT-License.txt) - Mozilla Public License (MPL) 1.0/1.1 Open Software License 2.0 PHP License 3.0 Python license (CNRI Python License) Python Software Foundation License 2.1.1 Sleepycat License ”1999” W3C License ”2001” X11 License ”2001” Zlib/libpng License - Zope Public License 2.0 48
Due to the many variants of some of the above licenses, we require that any version follow the 2003 version of the Free Software Foundation’s Free Software Definition (http://www.gnu.org/philosophy/free-sw.html) or version 1.9 of the Open Source Definition by the Open Source Initiative (http://www.opensource.org/docs/definitio 2. Definitions 1. Terms used, but not defined, herein shall have the meaning provided in the GPL. 2. Derivative Work means a derivative work under copyright law. 3. Applicability This FLOSS Exception applies to all Programs that contain a notice placed by University of Bonn, IKP saying that the Program may be distributed under the terms of this FLOSS Exception. If you create or distribute a work which is a Derivative Work of both the Program and any other work licensed under the GPL, then this FLOSS Exception is not available for that work; thus, you must remove the FLOSS Exception notice from that work and comply with the GPL in all respects, including by retaining all GPL notices. You may choose to redistribute a copy of the Program exclusively under the terms of the GPL by removing the FLOSS Exception notice from that copy of the Program, provided that the copy has never been modified by you or any third party. Version 0.1, 6 January 2005 This exception statement is based on “The MySQL AB Exception for Free/Libre and Open Source Software-only Applications Using MySQL Client Libraries (the ”FLOSS Exception”)” which can be found under http://www.mysql.com/company/legal/lice exception.html
49