cicero-0.7.2/0000755000076400007640000000000011026546052011437 5ustar niconicocicero-0.7.2/README0000644000076400007640000001121211026545563012322 0ustar niconicoCicero TTS: A Small, Fast and Free Text-To-Speech Engine. Copyright 2003-2008 Nicolas Pitre Copyright 2003-2008 Stéphane Doyon Version 0.7.2, June 2008 This software is distributed under the GNU General Public Licence (GPL). See the COPYING file in this package for more details. Our TTS engine currently speaks French and some resemblance of English, although we hope it can some day be taught to speak good English or other languages. The engine uses context-sensitive rules to produce phonemes from the text. It relies on MBROLA (http://tcts.fpms.ac.be/synthesis/mbrola.html) to generate actual audio output from the phonemes. The TTS engine is implemented using the Python programming language. We've come up with this TTS to try and meet our own needs as blind users. It's designed to be plugged as output to some screen-review software: currently only used with BRLTTY, but should adapt easily to other software. We favor speed and intelligibility over perfect pronunciation. We've tried to give it a quick response time, the ability to quickly shut-up and skip to another utterance, intelligibility where it counts (not perfect pronunciation), the ability to track speech progression, relative simplicity (hackability) and relative small code size. This TTS doesn't do any sort of grammatical analysis and it doesn't yet have a dictionary, so pronunciation isn't always perfect. But we've stretched the rule system pretty far and we think it's getting good. We're definitely not linguists, but we are demanding blind users. We've been using it seriously to do actual work for more than a year now. This is still an early release of our TTS, quality is beta-ish. Installation/integration surely has rough edges still, and pronunciation is constantly improving. The TODO-list is still generous. Credits: We were very much inspired by previous implementations of this general phonetization algorithm: David Haubensack's perl_tts: ftp://tcts.fpms.ac.be/pub/mbrola/tts/French/perl_tts.zip Alistair Conkie's perl_ttp: ftp://tcts.fpms.ac.be/pub/mbrola/tts/English/perl_ttp.zip Extra Requirements: - Requires python 2.3 or later (mainly for the ossaudiodev module), - Requires mbrola: tested with mbrola 301h. - Requires an mbrola voice database: tested with fr1. - Requires a Linux system with a working sound card using either the OSS sound API or ALSA's OSS emulation. Installation: At this stage we just execute it directly in the directory containing this README. - Copy config.py.sample to config.py. - Edit config.py to make the paths point to the right place. - Test by running tts_shell.py then typing in some text. BRLTTY usage with full text tracking: BRLTTY home site is here: http://mielke.cc/brltty/ The "External Speech" driver from BRLTTY is used. - Copy brl_es_wrapper.sample to brl_es_wrapper. - Edit brl_es_wrapper to make the paths point to the right place. - In /etc/brltty.conf put the following lines: speech-driver es speech-parameters program=/home/foo/cicero/brl_es_wrapper,uid=500,gid=500 with the correct path where you've untar'ed this, and with your user's correct uid and gid. - Restart BRLTTY. - If it doesn't speak, go look into the log file that you specified in brl_es_wrapper. Available utility scripts in this package: - tts_shell.py: "Interactively" speaks text received on stdin, echoes it back to stdout but only as it is spoken. Empty line means shut-up. Use ctrl-D to quit. - bulktalk.py: takes text from stdin (can be piped) or cmdline and either speaks it directly through MBROLA or saves the audio to a file. Matched rules can optionally be displayed for rule debugging. - wphons.py: Translates phrase given on cmd line or stdin into phonemes. Shows each rule as it is applied. Helps track pronunciation rule glitches. - saypho.py: Takes a sequence of phonemes on cmd line and speaks them to test out pronunciations. Calls mbrola and plays the result with sox. - regress.py: checklist.en contains a list of phrases and known good phonetic pronunciation pairs. Ttranslates each phrase to phonemes using the current rules file and checks that the result is identical to the known good pronunciation. For regression testing when editing the rules. - testfilters.py: Takes text from cmd line or stdin and passes it through the filters stage only, and prints the result. Feedback Appreciated: If you have any improvements to contribute, bugs to declare, or simply any comments (positive or negative) about this program, please don't hesitate to send us an email to the following addresses: Nicolas Pitre Stéphane Doyon cicero-0.7.2/phonetizer.py0000644000076400007640000001003111026545563014201 0ustar niconico# -*- coding: utf-8 # This file is part of Cicero TTS. # Cicero TTS: A Small, Fast and Free Text-To-Speech Engine. # Copyright (C) 2003-2008 Nicolas Pitre # Copyright (C) 2003-2008 Stéphane Doyon # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2. # See the accompanying COPYING file for more details. # # This program comes with ABSOLUTELY NO WARRANTY. # This is some glue between main and ttp. # This module splits the input into smaller chunks (so we don't process # everything in one go and can start to speak earlier). # It also manages tracking speech position with indexes. import re # profiling import ttp import config from profiling import * import tracing def trace(msg): mod = 'phonetizer' tracing.trace(mod+': '+msg) munch_rgxp = re.compile( ur'((?:\s*\S){50}.*?' ur'[^\.!\?\s]{3,}[\.!\?]*[\]\)\}"]*[\.!\?]+\s+)' ur'(\W*[A-ZÇÉÀÈÙÂÊÎÔÛ].*$)', re.S) bigsplit_rgxp = re.compile( r'((?:(?:\s*\S){50}.*?' '\n\n' '+)' r'|(?:.{450}.*?\s+))' r'(.*$)', re.S) class Phonetizer: def __init__(self, rate): self.rate = rate self.input = '' self.inputLen = 0 self.mbrolaSamples = 0 self.gotMbrolaTotal = 0 self.lastInx = 0 self.indexes = [(0,0)] self.consumedBytes = 0 self.totalDur = 0 self.getInput = ProfProxy('phonetizer.splitting', self.getInput) def feed(self, input): self.input += input self.inputLen += len(input) def getInput(self): if not self.input: trace('No more input') return None m = munch_rgxp.match(self.input) if m: txt = m.group(1) self.input = m.group(2) else: txt = self.input self.input = '' if len(txt) > 600: m = bigsplit_rgxp.match(txt) if m: txt = m.group(1) self.input = m.group(2) + self.input return txt def get(self, expand=config.mbrola_t): txt = self.getInput() if txt is None: assert self.inputLen == self.consumedBytes assert self.inputLen == self.indexes[-1][1] return None, 0 trace('Input chunk len %d' % len(txt)) out, indexes = ttp.process(txt) trace('%d phonemes, %d indexes' % (len(out.split('\n')), len(indexes))) dur = indexes[-1][0] *expand indexes = [((self.totalDur +t*expand)*self.rate/1000, b+self.consumedBytes) \ for t,b in indexes] self.indexes.extend(indexes) trace('duration %dms, consumed input bytes %d' % (dur, len(txt))) self.totalDur += dur self.consumedBytes += len(txt) if dur == 0: trace('0 duration phonemes') return None, 0 return out, dur def isDone(self): return not self.input def produced(self, nsamples): """Main calls back in here with actual output length from mbrola, before calling get() again.""" self.mbrolaSamples += nsamples if not self.input: self.gotMbrolaTotal = 1 trace('phonemes duration %dms, mbrola output %dsamples' % (self.totalDur, self.mbrolaSamples)) while self.indexes and self.indexes[-1][0] >= self.mbrolaSamples: self.indexes.pop(-1) self.indexes.append( (self.mbrolaSamples, self.consumedBytes) ) def index(self, spokenSamples): while len(self.indexes) >1 and self.indexes[1][0] <= spokenSamples: i = self.indexes.pop(0) trace('pop index %d %d' % i) inx = self.indexes[0][1] trace('index for %d samps -> %d bytes' % (spokenSamples, inx)) if inx > self.lastInx: self.lastInx = inx else: inx = None finished = not self.input and len(self.indexes) == 1 return inx, finished cicero-0.7.2/app_brltty_es.py0000644000076400007640000000556511026545563014701 0ustar niconico# -*- coding: utf-8 # This file is part of Cicero TTS. # Cicero TTS: A Small, Fast and Free Text-To-Speech Engine. # Copyright (C) 2003-2008 Nicolas Pitre # Copyright (C) 2003-2008 Stéphane Doyon # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2. # See the accompanying COPYING file for more details. # # This program comes with ABSOLUTELY NO WARRANTY. # This module handles the simplistic protocol of the BRLTTY # ExternalSpeech driver. # We are executed in a pipe so this module takes over stdin and stdout # for communication with BRLTTY. # Two commands on input: shutup or speak request. # In the other direction we send back indexes to track the current # listening position. import os, sys, struct import setencoding import tracing def trace(msg): mod = 'appfeed' tracing.trace(mod+': '+msg) class ProtoError(Exception): pass class AppFeed: def __init__(self): # make stdout/stderr unbuffered sys.stdin = os.fdopen(sys.stdin.fileno(), 'r', 0) sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0) sys.stderr = os.fdopen(sys.stderr.fileno(), 'w', 0) setencoding.stdfilesEncoding(None,None,0) def selectfd(self): return sys.stdin def sendIndex(self, inx): d = struct.pack('>H', inx) try: sys.stdout.write(d) sys.stdout.flush() except IOError, x: if x.errno == 32: trace('Exit on broken pipe') sys.exit(0) else: raise def handle(self): code = sys.stdin.read(1) if not code: trace('Exit on EOF') sys.exit(0) code = struct.unpack('B', code)[0] trace('code %d' % code) if code == 1: trace('Mute req') return 'M',None elif code == 2 or code == 4: trace('Speak req') d = sys.stdin.read(4) size, attribsize = struct.unpack('>HH', d) trace('size %d, attribsize %d' % (size, attribsize)) txtbuf = sys.stdin.read(size) attrbuf = sys.stdin.read(attribsize) # Just discard that for now # BRLTTY sends text encoded with ISO-8859-1 encoding = 'iso-8859-1' if code == 4: encoding = 'utf8' txtbuf = txtbuf.decode(encoding) trace('txt: <%s>' % txtbuf[:50]) self.sendIndex(0) return 'S',txtbuf elif code == 3: trace('Time scale') d = sys.stdin.read(4) expand = struct.unpack('>f', d)[0] trace('timescale %g' % expand) return 'T',expand else: raise ProtoError('Unrecognized command code %d' % code) def gotMore(self): return 0 cicero-0.7.2/checklist.en0000644000076400007640000000177310367036476013757 0ustar niconico# english regression list drop -> d r A p proxy -> p r A k s y plot -> p l A t later -> l EI t r= rock -> r A k crop -> k r A p box -> b A k s gospel -> g A s p @U l Washington -> w A S I N t @ n chop -> tS A p thumb -> T V m b vivid -> v I v I d vibrations -> v AI b r EI S @ n z garage -> g @ r A Z this -> D I s yesterday -> j E s t r= d EI womble -> w A m b @ l ahead -> @ h E d apple -> { { p @ l imagination -> I m { dZ I n EI S @ n imagine -> I m { { dZ I n pool -> p u l good -> g U d about -> @ b aU t island -> AI l @ n d toys -> t OI z over -> @U v r= outside -> aU t s AI d pizza -> p i d z A seven -> s E v @ n file -> f AI l fail -> f EI l discuss -> d I s k V s finalizing -> f AI n { l AI z I N subscribe -> s V b s k r AI b high -> h AI Hi -> h AI alive -> @ l AI v able -> EI b @ l table -> t EI b @ l unable -> V n EI b @ l disable -> d I s EI b @ l though -> D @U } thought -> T O t message -> m E s @ dZ anyone -> E n i w V n error -> E r r= ice -> AI s device -> d I v AI s friend -> f r E n d cicero-0.7.2/rule_format.txt0000644000076400007640000001422610542130500014511 0ustar niconicoPhonetic rule definitions ========================= A phonetic rule is of the form: (left context) [[ target ]] (right context) -> (phoneme list) The engine is therefore substituting the target letter or string with the specified phoneme symbol according to the first rule that matches. For example (taken from the French rules): [[ eau ]] -> o In french, the sequence "eau" is always pronounced "o". pati [[ en ]] -> a~ [[ en ]] n -> E Those are more examples with some contextual restrictions. The "en" in "patience" should be pronounced "a~" while the "en" in "penne" or "ennemi" is pronounced "E". That's where the context matching comes into play to distinguish between those two "en" cases. The left and right context are actual regular expressions. For example you can have: [[ eu ]] [bfilnprv] -> @ which means that "eu" immediately followed by one of b, f, i, l, n, p, r or v is pronounced "@". Or: (ba|com) [[ p ]] t -> means that the "p" in words like "baptiser" or "compter" is silent (empty phoneme list). The list of available phonemes depends on the voice database used with mbrola. Please see the documentation for the given database you wish to use. If you're not familiar with regular expressions already, it is strongly recommended that you learn about them first before reading any further. Documentation on regular expressions is available from many sources. Here's only a few of them, listed in increasing order of relevance: 1) man 7 regex 2) info regex 3) man perlretut 4) http://www.python.org/doc/2.3/lib/re-syntax.html 5) http://www.amk.ca/python/howto/regex/ The Python Regular Expression HOWTO (number 5 above) is a must, and the Python Regular Expression Syntax (number 4 above) is the definite reference since the phonetic rule matching is all based upon Python's regular expression support. Class substitutions =================== Since everything is converted to lowercase before applying rules, we used uppercase letters to define handy "classes" which are just in fact kind of macros to substitute long and/or less obvious regular expressions. For example: CLASS V [aeiouyàâéèêëîïôöùûü] so whenever V is used in a match description, it gets substituted by [aeiouyàâéèêëîïôöùûü] which is a more convenient way to specify any french vowel. CLASS C [bcçdfghjklmnñpqrstvwxz] Is for consonants, and then: CLASS L (?:V|C) for any letter. Then you can use those in context rules: (V|CCan) [[ s ]] V -> z so to match "baiser" or "transition" for example. And finally, some classes to mark either punctuations (P), the beginning of a word (S) or the end of a word (T): CLASS P [\,\.\;\:\!\?] CLASS S (?:^|_|P|\') CLASS T (?:$|_|P) Note that the _ denotes a space. So we now can write: sp [[ ect ]] s?T -> E to mean that any "ect" ending a word preceded by "sp", including the possible plural form, should be pronounced "E". Note that those classes may not be used in the target match between [[ ]]. You can have a look at the rules.en file for more examples of class usage. Prefilter definitions ===================== Those are regular expressions, too, to process text before applying phonetic rules. This is used to convert everything to spelled out text, like numbers, special symbols, abbreviations, etc. The syntax is quite straight forward: -> "replacement string" See the rules.fr file for example and/or inspiration. Regression testing ================== Whenever an addition and/or modification to the rule file is performed, please consider adding entries to the regression test file. This ensures that no regression is introduced by your changes and that the newly handled cases won't be accidentally lost by future changes. The format is simple with one entry per line as follows: -> where is any text input that may include multiple words or numbers, and the resulting phoneme translation. See the checklist.fr file for example which is the current French regression check list. To add entries to the regression file, the wphons.py tool can be used as it prints on its standard output the translated phonemes for a given string. For example, a quick way to add to the French regression file would be: ./wphons.py "Les poules couvent au couvent." >> checklist.fr And finally, to test it all simply run the regress.py tool which will check all entries and report any mismatch. Prosodic rule definitions ========================= Our prosodic processing is extremely simple (no grammatical analysis of the original text). It relies on surrounding punctuations and the number of syllables found in a word to apply a speed and pitch curve pattern to any given word. For example: PROSO_SPEED . -30, 10 That means the word that is followed by a period (usually the end of a sentence) will have its phonemes' duration stretched gradually (or slowed down) up to 30% of the default duration towards the end of the word. The next word after the period will have its first phonemes pronounced 10% faster at the beginning of the word with a gradual return to the default duration. PROSO_PITCH . [1] {"100 70"} PROSO_PITCH . [2] {"100 110", "100 70"} PROSO_PITCH . [3] {"0 120", "100 100", "100 70"} PROSO_PITCH . [4] {"0 110", "100 120", "100 100", "100 70"} Those are the pitch curve applied to the word preceding a period according to the number ov vowels it contains. Each tuple is a location expressed in percent of the vowel duration and a pitch factor. Those are passed straight to mbrola (you can look at the mbrola documentation for more explanations on those). For example, if you have "Hello." that's 2 vowels so the pitch would reach 110 when 100% of the "e" is pronounced, then to drop down to a pitch of 70 when 100% of the "o" is pronounced, as well as slowing down. Note again that _ is a special punctuation to mean a space. The PHO statement maps a specific phoneme to a class used to determine if it constitutes a vowel or not for the prosodic processing, and a default duration in milliseconds that can be stretched or shortened according to prosodic rules. All used phonemes must be listed. cicero-0.7.2/profiling.py0000644000076400007640000000256311026545563014016 0ustar niconico# -*- coding: utf-8 # This file is part of Cicero TTS. # Cicero TTS: A Small, Fast and Free Text-To-Speech Engine. # Copyright (C) 2003-2008 Nicolas Pitre # Copyright (C) 2003-2008 Stéphane Doyon # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2. # See the accompanying COPYING file for more details. # # This program comes with ABSOLUTELY NO WARRANTY. import time _prof_records = {} def profPut(name, time): oldt = _prof_records.get(name, 0) _prof_records[name] = oldt +time class ProfProxy: def __init__(self, name, func): self.name = name self.func = func def __call__(self, *args, **kwargs): t = time.time() r = self.func(*args, **kwargs) profPut(self.name, time.time() -t) return r class ProfMonitor: def __init__(self, name): self.name = name self.startTime = time.time() def __invert__(self): t = time.time() -self.startTime profPut(self.name, t) self.startTime = None # So it's not used a second time def profReport(): keys = _prof_records.keys() keys.sort() out = [(name, _prof_records[name]) for name in keys] out = [('%-20s: %.4fs' % (name, val)) for name,val in out] out = '\n'.join(out) return out cicero-0.7.2/rules.en0000644000076400007640000003576111026545563013137 0ustar niconico# This file is part of Cicero TTS. # Cicero TTS: A Small, Fast and Free Text-To-Speech Engine. # Copyright (C) 2003-2008 Nicolas Pitre # Copyright (C) 2003-2008 Stéphane Doyon # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2. # See the accompanying COPYING file for more details. # # This program comes with ABSOLUTELY NO WARRANTY. # Very early work-in-progress on English rules, tested with the us1 database. # These phonemes are defined for the voice but are not produced by these # rules. They ought to be. # p_h pod (aspirated allophone of p) # t_h top (aspirated allophone of t) # 4 later (flapped allophone of t) # k_h cot (aspirated allophone of k) # Durations are lifted from freephone, loose correspondance. PHO p C 97 # proxy drop PHO t C 64 # plot tromp PHO k C 88 # rock crop PHO b C 73 # cob box PHO d C 42 # nod dot PHO g C 62 # jog gospel PHO f C 91 # prof fox PHO s C 94 # boss sonic PHO S C 104 # wash shop PHO tS C 123 # notch chop PHO T C 86 # cloth thomp PHO v C 46 # salve volley PHO z C 64 # was zombie PHO Z C 68 # garage jacques PHO dZ C 91 # dodge jog PHO D C 25 # clothe thy PHO m C 58 # palm mambo PHO n C 53 # john novel PHO N C 58 # bong PHO l C 50 # doll lockwood PHO r C 47 # star roxanne PHO j C 39 # yacht PHO w C 50 # show womble PHO h C 56 # harm PHO r= V 154 # her urgent PHO i V 91 # even PHO A V 150 # arthur PHO O V 134 # all PHO u V 93 # oodles PHO I V 58 # illness PHO E V 89 # else PHO { V 45 # apple PHO V V 86 # nut PHO U V 60 # good #PHO @ V 45 # about PHO @ V 90 # about PHO EI V 126 # able PHO AI V 126 # island PHO OI V 177 # oyster PHO @U V 90 # over PHO aU V 164 # out # Punctuations, lifted from french rules. PHO _ P 0 PHO . P 190 PHO , P 150 PHO : P 170 PHO ! P 200 PHO ? P 200 # Prosody stuff, lifted from french rules. Need complete overoll. PROSO_SPEED _ 0, 0 PROSO_PITCH _ [1] {"0 100"} PROSO_PITCH _ [2] {"100 110", "100 100"} PROSO_PITCH _ [3] {"0 120", "100 110", "100 100"} PROSO_PITCH _ [4] {"0 120", "", "100 110", "100 100"} PROSO_SPEED & 0, 7 PROSO_PITCH & [1] {"0 100"} PROSO_PITCH & [2] {"100 110", "100 100"} PROSO_PITCH & [3] {"0 120", "100 110", "100 100"} PROSO_PITCH & [4] {"0 120", "", "100 110", "100 100"} PROSO_SPEED - 0, 7 PROSO_PITCH - [1] {"0 100"} PROSO_PITCH - [2] {"100 110", "100 100"} PROSO_PITCH - [3] {"0 120", "100 110", "100 100"} PROSO_PITCH - [4] {"0 120", "", "100 110", "100 100"} PROSO_SPEED , -20, 10 PROSO_PITCH , [1] {"100 135"} PROSO_PITCH , [2] {"100 115", "100 135"} PROSO_PITCH , [3] {"0 110", "100 115", "100 135"} PROSO_PITCH , [4] {"0 120", "100 110", "100 130", "100 135"} PROSO_SPEED . -30, 10 PROSO_PITCH . [1] {"100 70"} PROSO_PITCH . [2] {"100 110", "100 70"} PROSO_PITCH . [3] {"0 120", "100 100", "100 70"} PROSO_PITCH . [4] {"0 110", "100 120", "100 100", "100 70"} PROSO_SPEED ! -200, 10 PROSO_PITCH ! [1] {"0 110 30 180 100 110"} PROSO_PITCH ! [2] {"100 130", "20 180 100 110"} PROSO_PITCH ! [3] {"100 120", "100 130", "20 180 100 110"} PROSO_PITCH ! [4] {"0 120", "100 110", "100 130", "30 180 100 110"} PROSO_SPEED ? -30, 10 PROSO_PITCH ? [1] {"0 110 100 170"} PROSO_PITCH ? [2] {"100 120", "100 170"} PROSO_PITCH ? [3] {"0 110", "100 120", "100 170"} PROSO_PITCH ? [4] {"0 120", "100 110", "100 130", "100 170"} PROSO_SPEED : -20, 10 PROSO_PITCH : [1] {"0 100 100 135"} PROSO_PITCH : [2] {"100 115", "100 135"} PROSO_PITCH : [3] {"0 110", "100 115", "100 135"} PROSO_PITCH : [4] {"0 120", "100 110", "100 130", "100 135"} # Now classes and rules, taken from perl_ttp.zip # by Alistair Conkie (adc@cstr.ed.ac.uk) dated 13/12/95. # I have renamed phonemes to the codes used by mbrola voices. # Hope there aren't too many correspondance errors. # C consonant # V vowel # E ending (er,e,es,ed,ing,ely) # Z voiced consonant (b,d,v,j,l,m,n,r,w) # F front vowel (e,i,y) CLASS C [bcdfghjklmnpqrstvwxz] CLASS V [aeiouy] CLASS E (?:er|e|es|ed|ing|ely) CLASS Z [bdvjlmnrw] CLASS F [eiy] # From French rules: CLASS L (?:V|C) # letters CLASS P [\,\.\;\:\!\?] # punctuations CLASS N [0-9] # digits CLASS S (?:^|_|P|\') # beginning of word CLASS T (?:$|_|P|\') # end of word Z [[ 's ]] -> z V+C*Ze [[ 's ]] -> z V+ [[ 's ]] -> z [[ ' ]] -> S [[ a ]] T -> EI [[ a ]] T -> @ LC [[ able ]] -> @ b @ l [[ able ]] -> EI b @ l S [[ acc ]] [ei] -> { k s [[ again ]] -> @ g E n V+C [[ ag ]] e -> I dZ [[ air ]] -> E r [[ ai ]] -> EI V+C* [[ ally ]] -> @ l i S [[ al ]] V+ -> @ l V+C* [[ al ]] T -> @ l V+C* [[ als ]] T -> @ l z [[ alk ]] -> O k [[ al ]] C -> O l [[ ang ]] F -> EI n dZ SC* [[ any ]] -> E n i S [[ are ]] T -> A r S [[ ar ]] o -> @ r [[ ar ]] V+ -> E r S [[ arr ]] -> @ r [[ arr ]] -> { r SC* [[ ar ]] T -> A r [[ ar ]] T -> r= [[ ar ]] -> A r C [[ as ]] V+ -> EI s [[ au ]] -> O [[ a ]] wa -> @ [[ aw ]] -> O [[ ay ]] -> EI [[ a ]] CFV+ -> EI [[ a ]] CFC*V+ -> { SC* [[ a ]] CFT -> EI [[ a ]] CE -> EI S [[ a ]] -> @ [[ a ]] -> { S [[ b ]] T -> b I S [[ be ]] CV+ -> b I [[ being ]] -> b i I N S [[ both ]] T -> b @U T [[ buil ]] -> b I l S [[ bus ]] V+ -> b I z [[ b ]] -> b S [[ c ]] T -> s I [[ cc ]] -> k S [[ ch ]] C -> k Ce [[ ch ]] -> k [[ ch ]] -> tS Ss [[ ci ]] V+ -> s AI [[ ci ]] a -> S [[ ci ]] en -> S [[ ci ]] o -> S [[ c ]] F -> s [[ ck ]] -> k [[ c ]] q -> [[ c ]] -> k S [[ d ]] T -> d I V+C* [[ ded ]] T -> d I d Ze [[ d ]] T -> d V+C*Ce [[ d ]] T -> t S [[ de ]] CV+ -> d I S [[ do ]] T -> d u S [[ does ]] -> d V z S [[ doing ]] -> d u I N S [[ dow ]] -> d aU [[ du ]] a -> dZ u [[ d ]] -> d V+C* [[ e ]] T -> 'C*C [[ e ]] T -> SC* [[ e ]] T -> i V+ [[ ed ]] T -> d V+C* [[ e ]] dT -> C [[ e ]] ment -> [[ ev ]] er -> E v [[ e ]] CE -> i [[ eri ]] V+ -> i r i [[ eri ]] -> E r I V+C* [[ er ]] V+ -> r= [[ er ]] V+ -> E r [[ er ]] -> r= S [[ even ]] -> i v E n V+C* [[ e ]] w -> t [[ ew ]] -> u s [[ ew ]] -> u r [[ ew ]] -> u d [[ ew ]] -> u l [[ ew ]] -> u z [[ ew ]] -> u n [[ ew ]] -> u j [[ ew ]] -> u th [[ ew ]] -> u ch [[ ew ]] -> u sh [[ ew ]] -> u [[ ew ]] -> j u [[ e ]] o -> i V+C*s [[ es ]] T -> I z V+C*c [[ es ]] T -> I z V+C*g [[ es ]] T -> I z V+C*z [[ es ]] T -> I z V+C*x [[ es ]] T -> I z V+C*j [[ es ]] T -> I z V+C*ch [[ es ]] T -> I z V+C*sh [[ es ]] T -> I z V+C* [[ e ]] sT -> V+C* [[ ely ]] T -> l i V+C* [[ ement ]] -> m E n t [[ eful ]] -> f U l [[ ee ]] -> i [[ earn ]] -> r= n S [[ ear ]] C -> r= [[ ead ]] -> E d V+C* [[ ea ]] T -> i @ [[ ea ]] su -> E [[ ea ]] -> i [[ eigh ]] -> EI [[ ei ]] -> i S [[ eye ]] -> AI [[ ey ]] -> i [[ eu ]] -> j U [[ e ]] -> E S [[ f ]] T -> E f [[ ful ]] -> f U l [[ f ]] -> f S [[ g ]] T -> dZ i [[ giv ]] -> g I v S [[ g ]] iC -> g [[ ge ]] t -> g E su [[ gges ]] -> g dZ E s [[ gg ]] -> g SbV+ [[ g ]] -> g [[ g ]] F -> dZ [[ great ]] -> g r EI t V+ [[ gh ]] -> [[ g ]] -> g S [[ h ]] T -> EI tS S [[ hav ]] -> h { v S [[ here ]] -> h i r S [[ hour ]] -> aU r= [[ how ]] -> h aU [[ h ]] V+ -> h [[ h ]] -> S [[ in ]] -> I n S [[ i ]] T -> AI [[ in ]] d -> AI n [[ ier ]] -> i r= V+C*r [[ ied ]] -> i d [[ ied ]] T -> AI d [[ ien ]] -> i E n [[ ie ]] t -> AI E SC* [[ i ]] E -> AI [[ i ]] E -> i [[ ie ]] -> i [[ i ]] CFC*V+ -> I [[ ir ]] V+ -> AI r [[ iz ]] E -> AI z [[ is ]] E -> AI z [[ i ]] dE -> AI FC [[ i ]] CF -> I [[ i ]] tE -> AI V+C*C [[ i ]] CF -> I [[ i ]] CF -> AI [[ ir ]] -> r= [[ igh ]] -> AI [[ ild ]] -> AI l d [[ ign ]] T -> AI n [[ ign ]] C -> AI n [[ ign ]] E -> AI n [[ ique ]] -> i k [[ i ]] -> I S [[ j ]] T -> dZ EI [[ j ]] -> dZ S [[ k ]] T -> k EI S [[ k ]] n -> [[ k ]] -> k S [[ l ]] T -> E l [[ lo ]] cV+ -> l V l [[ l ]] -> V+C*C [[ l ]] E -> @ l [[ lead ]] -> l i d [[ l ]] -> l S [[ m ]] T -> E m [[ mov ]] -> m u v [[ m ]] -> m S [[ n ]] T -> E n e [[ ng ]] F -> n dZ [[ ng ]] r -> N g [[ ng ]] V+ -> N g [[ ngl ]] E -> N g @ l [[ ng ]] -> N [[ nk ]] -> N k S [[ now ]] T -> n aU [[ n ]] -> n [[ o ]] T -> @U [[ oa ]] -> @U [[ o ]] e -> @U [[ of ]] T -> @ v [[ of ]] C -> O f [[ oing ]] -> @U I N [[ oi ]] -> OI [[ ol ]] d -> @U l V+C*C [[ om ]] -> V m c [[ om ]] E -> V m [[ on't ]] -> @U n t S [[ only ]] -> @U n l i S [[ once ]] -> w V n s S [[ one ]] -> w V n S[dg] [[ one ]] T -> O n c [[ o ]] n -> A [[ o ]] ng -> O SC?C [[ o ]] n -> @U i [[ on ]] -> @ n V+C* [[ on ]] T -> @ n V+C [[ on ]] -> @ n [[ ood ]] -> U d [[ ook ]] -> U k [[ oor ]] -> O r [[ oo ]] -> u [[ orough ]] -> r= @U V+C* [[ or ]] T -> r= V+C* [[ ors ]] T -> r= z [[ or ]] -> O r [[ oss ]] T -> O s [[ o ]] stT -> @U [[ other ]] -> V D r= [[ ought ]] -> O t [[ ough ]] -> V f S [[ ou ]] -> aU h [[ ou ]] sV+ -> aU [[ ous ]] -> @ s [[ our ]] -> O r [[ ould ]] -> U d C [[ ou ]] Cl -> V [[ oup ]] -> u p [[ ou ]] -> aU S [[ over ]] -> @U v r= [[ ov ]] -> V v [[ ow ]] -> @U [[ oy ]] -> OI [[ o ]] CE -> @U [[ o ]] Cen -> @U [[ o ]] CiV+ -> @U [[ o ]] -> A S [[ p ]] T -> p i [[ peop ]] -> p i p [[ ph ]] -> f [[ pow ]] -> p aU [[ put ]] T -> p U t [[ pp ]] -> p [[ p ]] -> p S [[ q ]] T -> k j u [[ quar ]] -> k w O r [[ qu ]] -> k w [[ q ]] -> k S [[ r ]] T -> A r S [[ re ]] CV+ -> r i [[ rr ]] -> r [[ r ]] -> r S [[ s ]] T -> E s [[ sh ]] -> S V+ [[ sion ]] -> Z @ n [[ some ]] -> s V m V+ [[ sur ]] V+ -> Z r= [[ sur ]] V+ -> S r= V+ [[ su ]] V+ -> Z u V+ [[ ssu ]] V+ -> S u V+ [[ sed ]] T -> z d V+ [[ s ]] V+ -> z [[ said ]] -> s E d C [[ sion ]] -> S @ n [[ s ]] s -> Z [[ s ]] T -> z V+C*Ze [[ s ]] T -> z V+C*CV+V+ [[ s ]] T -> z V+C*CV+ [[ s ]] T -> s u [[ s ]] T -> s SC*V+ [[ s ]] T -> z S [[ sch ]] -> s k [[ s ]] cF -> V+ [[ sm ]] -> z m V+ [[ sn ]] ' -> z @ n [[ s ]] -> s S [[ t ]] T -> t i [[ tch ]] -> tS V+C* [[ ted ]] T -> t I d S [[ than ]] T -> D { n [[ that ]] T -> D { t S [[ the ]] T -> D @ [[ their ]] -> D E r S [[ them ]] T -> D E m S [[ then ]] -> D E n S [[ there ]] -> D E r [[ ther ]] -> D r= [[ these ]] T -> D i z S [[ they ]] -> D EI S [[ this ]] T -> D I s [[ those ]] -> D @U z [[ though ]] T -> D @U [[ through ]] -> T r u S [[ thus ]] -> D V s [[ th ]] -> T s [[ ti ]] V+n -> tS [[ ti ]] a -> S [[ tien ]] -> S @ n [[ ti ]] o -> S [[ to ]] T -> t u [[ tu ]] a -> tS u [[ tur ]] V+ -> tS r= S [[ two ]] -> t u [[ tt ]] -> t [[ t ]] -> t S [[ un ]] i -> j u n S [[ un ]] -> V n S [[ upon ]] -> @ p O n t [[ ur ]] V+ -> U r s [[ ur ]] V+ -> U r r [[ ur ]] V+ -> U r d [[ ur ]] V+ -> U r l [[ ur ]] V+ -> U r z [[ ur ]] V+ -> U r n [[ ur ]] V+ -> U r j [[ ur ]] V+ -> U r th [[ ur ]] V+ -> U r ch [[ ur ]] V+ -> U r sh [[ ur ]] V+ -> U r [[ ur ]] V+ -> j U r [[ ur ]] -> r= [[ u ]] CT -> V [[ u ]] CC -> V [[ uy ]] -> AI Sg [[ u ]] V+ -> g [[ u ]] E -> g [[ u ]] V+ -> w V+n [[ u ]] -> j u t [[ u ]] -> u s [[ u ]] -> u r [[ u ]] -> u d [[ u ]] -> u l [[ u ]] -> u z [[ u ]] -> u n [[ u ]] -> u j [[ u ]] -> u th [[ u ]] -> u ch [[ u ]] -> u sh [[ u ]] -> u [[ u ]] -> j u S [[ v ]] T -> v i [[ view ]] -> v j u [[ v ]] -> v S [[ w ]] T -> d V b @ l j u [[ ward ]] -> w r= d [[ ware ]] -> w E r [[ wa ]] s -> w A [[ wa ]] t -> w A S [[ were ]] -> w r= [[ what ]] -> w A t [[ where ]] -> w E r [[ whol ]] -> h @U l [[ who ]] -> h u [[ wh ]] -> w [[ wor ]] C -> w r= [[ wr ]] -> r [[ w ]] -> w S [[ x ]] T -> E k s [[ x ]] -> k s S [[ y ]] T -> w V I S [[ yes ]] -> j E s [[ young ]] -> j V N S [[ you ]] -> j u S [[ y ]] -> j (SC|b) [[ y ]] T -> AI V+C*C [[ y ]] T -> i V+C*C [[ y ]] i -> i SC* [[ y ]] V+ -> AI SC* [[ y ]] CFC*V+ -> I SC* [[ y ]] CV+ -> AI [[ y ]] -> I S [[ z ]] T -> z i [[ z ]] -> z [[ _ ]] -> _ # espace [[ . ]] -> . [[ , ]] -> , [[ ; ]] -> ; [[ : ]] -> : [[ ! ]] -> ! [[ ? ]] -> ? # Prephonetization filters # Caution: The produced output of a filter is itself processed only by the # subsequent filters. # Caution: When an S or _ (space) is matched, it is consumed. Produce a # space to replace it to keep the words separate. # minus sign S-(N) -> " minus \1" # dash between digits (N)-(N) -> "\1 dash \2" # decimal point (N)\.(N) -> "\1 point \2" (N),(N) -> "\1 \2" # adds space between digits and letters (N)([^0-9]) -> "\1 \2" ([^0-9])(N) -> "\1 \2" # recombines numbers containing spaces (or commas) (? "\1" # Numbers (N)(?=N{12,}) -> "\1 " S0 -> " zero " ([1-9]N*)(?=N{9}) -> "\1 billion " ([1-9]N*)(?=N{6}) -> "\1 million " ([1-9]N*)(?=N{3}) -> "\1 thousand " ([1-9])(?=N{2}) -> "\1 hundred " 9(?=N) -> "ninty 1" 8(?=N) -> "eighty " 7(?=N) -> "seventy 1" 6(?=N) -> "sixty " 5(?=N) -> "fifty " 4(?=N) -> "fourty " 3(?=N) -> "thirty " 2(?=N) -> "twenty " 19 -> "nineteen " 18 -> "eighteen " 17 -> "seventeen " 16 -> "sixteen " 15 -> "fifteen " 14 -> "fourteen " 13 -> "thirteen " 12 -> "twelve " 11 -> "eleven " 10 -> "ten " 9 -> "nine " 8 -> "eight " 7 -> "seven " 6 -> "six " 5 -> "five " 4 -> "four " 3 -> "three " 2 -> "two " 1 -> "one " 0 -> "" # punctuations pronounced when nof followed by space: \.(?!($|\s)) -> " dot " \,(?!($|\s)) -> " comma " \?(?!($|\s)) -> " question " \!(?!($|\s)) -> " exclamation " \:(?!($|\s)) -> " colon " \;(?!($|\s)) -> " semicolon " # prononce "tiret" quand il n'est pas entouré de lettres #\-(?!L) -> " dash " #(?!L)\- -> " dash " # names of symbols " -> " quote " \# -> " number sign " \$ -> " dollar " \% -> " percent " \& -> " ampersand " \( -> " left parenthesis " \) -> " right parenthesis " \* -> " asterisk " \+ -> " plus " \/ -> " slash " < -> " less than " = -> " equals " > -> " greater than " \@ -> " at " \[ -> " left bracket " \\ -> " backslash " \] -> " right bracket " \^ -> " carret " \_ -> " underscore " ` -> " backquote " \{ -> " left brace " \| -> " bar " \} -> " right brace " ~ -> " tilda " ¢ -> " cennts " ¥ -> " yen " £ -> " pounds " ° -> " degrees " ± -> " plus or minus " × -> " multied by " ÷ -> " divided by " ¼ -> " one fourth " ½ -> " one half " ¾ -> " three fourths " © -> " copyright " ® -> " registred " # If these get re-ordered, no production must include - after this one. - -> " " # Unpronounceable sequences of consonants should be spelled out. S(C)(C)T -> " \1 \2 " S(C)(C)(C)T -> " \1 \2 \3 " S(C)(C)(C)(C)T -> " \1 \2 \3 \4 " (C)(\1)(\1) -> " \1 \1 \1 " # Remove spaces aroudn punctuations _*([\.\!\?\:\;\,\'])_* -> "\1" # Collapse blanks _+ -> " " cicero-0.7.2/rules.fr0000644000076400007640000005341711026545563013142 0ustar niconico# This file is part of Cicero TTS. # Cicero TTS: A Small, Fast and Free Text-To-Speech Engine. # Copyright (C) 2003-2008 Nicolas Pitre # Copyright (C) 2003-2008 Stéphane Doyon # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2. # See the accompanying COPYING file for more details. # # This program comes with ABSOLUTELY NO WARRANTY. # Les filtres préparent le texte de sorte qu'il ne contient plus # de caractères étranges (non-printables, tabs, newlines, etc), # ni de chiffres, # ni de tirets... # Les ponctuations qui restent dans le texte après les filtres, et # qui sont gérées par les règles: , . ; : ! ? # L'apostrophe y reste aussi. # Les autres symboles doivent être éliminés par les filtres: # #"/$%&*()-_=+[]{}<>^` et autres. # Le dernier filtre compresse les suites de plusieurs espaces en un seul. # Dans les patterns des filtres et des règles, _ est un caractère spécial # qui est remplacé par un espace, à moins d'être précédé de \. # Les règles doivent conserver les séparations de mot. Toute règle # qui consomme un _ (espace) doit produire un _ ou & ou -. # En sortie, le phonème _ délimite les mots séparés "ordinairement", tandis # que & est un séparateur "virtuel" pour montrer le passage à un autre # mot lorsqu'il y a liaison. # - introduit une pause pour le h aspiré. # phonem type duration PHO @ V 60 PHO a V 83 PHO a~ V 111 PHO b C 75 PHO d C 68 PHO e V 86 PHO e~ V 96 PHO E V 82 PHO f C 123 PHO g C 55 PHO H C 58 PHO i V 79 PHO j C 61 PHO k C 81 PHO l C 50 PHO m C 77 PHO n C 64 PHO N C 72 PHO o V 83 PHO o~ V 111 PHO O V 95 PHO p C 97 PHO R C 54 PHO s C 90 PHO S C 120 PHO t C 88 PHO u V 87 PHO v C 78 PHO w C 65 PHO y V 74 PHO z C 87 PHO Z C 80 PHO 2 V 107 PHO 9 V 99 PHO 9~ V 102 PHO _ P 0 # Les suivantes servent pour la prosodie et les indexes mais ne se rendent # pas jusqu'à MBROLA. PHO & P 0 PHO - P 14 PHO . P 190 PHO , P 150 PHO : P 170 PHO ! P 200 PHO ? P 200 PROSO_SPEED _ 0, 0 PROSO_PITCH _ [1] {"0 100"} PROSO_PITCH _ [2] {"100 110", "100 100"} PROSO_PITCH _ [3] {"0 120", "100 110", "100 100"} PROSO_PITCH _ [4] {"0 120", "", "100 110", "100 100"} PROSO_SPEED & 0, 7 PROSO_PITCH & [1] {"0 100"} PROSO_PITCH & [2] {"100 110", "100 100"} PROSO_PITCH & [3] {"0 120", "100 110", "100 100"} PROSO_PITCH & [4] {"0 120", "", "100 110", "100 100"} PROSO_SPEED - 0, 7 PROSO_PITCH - [1] {"0 100"} PROSO_PITCH - [2] {"100 110", "100 100"} PROSO_PITCH - [3] {"0 120", "100 110", "100 100"} PROSO_PITCH - [4] {"0 120", "", "100 110", "100 100"} PROSO_SPEED , -20, 10 PROSO_PITCH , [1] {"100 135"} PROSO_PITCH , [2] {"100 115", "100 135"} PROSO_PITCH , [3] {"0 110", "100 115", "100 135"} PROSO_PITCH , [4] {"0 120", "100 110", "100 130", "100 135"} PROSO_SPEED . -30, 10 PROSO_PITCH . [1] {"100 70"} PROSO_PITCH . [2] {"100 110", "100 70"} PROSO_PITCH . [3] {"0 120", "100 100", "100 70"} PROSO_PITCH . [4] {"0 110", "100 120", "100 100", "100 70"} PROSO_SPEED ! -200, 10 PROSO_PITCH ! [1] {"0 110 30 180 100 110"} PROSO_PITCH ! [2] {"100 130", "20 180 100 110"} PROSO_PITCH ! [3] {"100 120", "100 130", "20 180 100 110"} PROSO_PITCH ! [4] {"0 120", "100 110", "100 130", "30 180 100 110"} PROSO_SPEED ? -30, 10 PROSO_PITCH ? [1] {"0 110 100 170"} PROSO_PITCH ? [2] {"100 120", "100 170"} PROSO_PITCH ? [3] {"0 110", "100 120", "100 170"} PROSO_PITCH ? [4] {"0 120", "100 110", "100 130", "100 170"} PROSO_SPEED : -20, 10 PROSO_PITCH : [1] {"0 100 100 135"} PROSO_PITCH : [2] {"100 115", "100 135"} PROSO_PITCH : [3] {"0 110", "100 115", "100 135"} PROSO_PITCH : [4] {"0 120", "100 110", "100 130", "100 135"} CLASS V [aeiouyàâéèêëîïôöùûü] # voyelles CLASS C [bcçdfghjklmnñpqrstvwxz] # consonnes CLASS L (?:V|C) # toutes les lettres CLASS P [\,\.\;\:\!\?] # ponctuations CLASS N \d # chiffres CLASS S (?:^|_|P|\') # limite gauche d'un mot CLASS T (?:$|_|P) # limite droite d'un mot # règles de substitutions [[ à ]] -> a ## déjà [[ â ]] -> a ## pâte [[ ae ]] T -> e ## reggae vitae [[ aen ]] -> a a~ ## caen [[ ae ]] -> a e ## maestro [[ aî ]] -> E ## maître [[ aim ]] (C|T) -> e~ ## faim [[ ain ]] (C|T) -> e~ ## pain f [[ ai ]] sV -> @ ## faisons faisan [[ a ]] il(l|s?T) -> a ## paille bail [[ aie ]] me -> E ## paiement [[ ai ]] -> E ## aile [[ am ]] [bp] -> a~ ## camp [[ am ]] m -> a ## programmation [[ am ]] n -> a m ## amnistie [[ a ]] nn -> a ## manne [[ an ]] (C|T) -> a~ ## ancien [[ aoû ]] -> u ## août [[ au ]] lT -> O ## Paul [[ au ]] -> o ## autruche p [[ ay ]] s -> E i ## pays paysage [[ ay ]] (C|T) -> E ## aymé [[ ay ]] -> E j ## paye [[ a ]] -> a ## bateau S [[ b ]] T -> b e ## b [[ byte ]] T -> b a i t ## byte [[ bytes ]] T -> b a i t s ## bytes [[ bb ]] -> b ## abbé om [[ b ]] T -> ## plomb applomb [[ b ]] -> b ## aube S [[ c ]] T -> s e ## c [[ c' ]] -> s ## c'est [[ ç ]] -> s ## rançon [[ cch ]] -> k ## bacchanale [[ cc ]] [eèéêiîy] -> k s ## accéder [[ cc ]] -> k ## occuper ar [[ ch ]] ét -> k ## archétype architecte or [[ ch ]] (?!es?T)V -> k ## orchestre orchidée sy [[ ch ]] (?!i)V -> k ## psycho S [[ ch ]] or -> k ## chorale (yn|(? k ## chrétien [[ ch ]] -> S ## chien [[ ck ]] -> k ## nickel [[ cqu ]] -> k ## grecque [[ cq ]] -> k ## pecq [sx] [[ c ]] [eèéêiîy] -> ## scène [[ c ]] [eèéêiîy] -> s ## cède (bl?an|cler|tchou|taba) [[ c ]] s?T -> ## banc blanc leclerc se [[ c ]] ond -> g ## seconde secondaire [[ c ]] -> k ## recoin donc S [[ d ]] T -> d e ## d [[ dd ]] -> d ## addition (S|C)[lst]an [[ d ]] s?T -> d ## stand land (C|qu)[aeo]n [[ d_ ]] h?V -> t & ## grand ami, grand homme (C|qu)[aeo]n [[ d ]] s?T -> ## grand marchand [[ dt ]] T -> ## rembrandt r [[ d ]] T -> ## lourd placard [[ d ]] -> d ## don bled S [[ e ]] T -> @ ## e [[ eau ]] -> o ## bateau cheveaux j [[ e ]] a -> ## Jean Jeanne sp [[ ect ]] s?T -> E ## aspect suspect S(tré)?pi [[ ed ]] -> e ## pied [[ ee ]] -> i ## meeting Scl [[ ef ]] s?T -> e ## cle [[ ein ]] (C|T) -> e~ ## peindre [[ e ]] il -> E ## vieille [[ ei ]] -> E ## neige [[ eî ]] -> E ## [[ ell ]] -> E l l ## selle [[ el ]] (C|T) -> E l ## caramel celsius [[ em ]] me -> a ## femme patiemment [[ em ]] [bmp] -> a~ ## emmencher décembre S [[ en ]] T -> a~ ## en S [[ en ]] (h|V) -> a~ n ## enharmonique enivrer (C|qu) [[ en ]] ds?T -> a~ ## comprend dépend pati [[ en ]] -> a~ ## patient patience S [[ en ]] nu -> a~ ## ennui [[ en ]] n -> E ## penne mienne ennemi [[ ent ]] sT -> a~ ## dents couvents présents éC [[ ent ]] T -> a~ ## récent différent élément (SC|cc) [[ ent ]] T -> a~ ## cent vent lent dent accent S(ja|vin)c [[ ent ]] T -> a~ ## Vincent sous-jacent [is]ci [[ ent ]] T -> a~ ## conscient coefficient [tv]i [[ ent ]] T -> e~ ## revient (al|xcell) [[ ent ]] T -> a~ ## talent équivalent excellent (m|e|mo|Lai|[cglr]u)m [[ ent ]] T -> a~ ## prudemment vitement moment (Ccid|Scli|Slaur|S(mé)?cont|mpét|prés|Ssouv) [[ ent ]] T -> a~ ## souvent compétent client (s|qui)_couv [[ ent ]] T -> ## elles couvent Scouv [[ ent ]] T -> a~ ## le couvent S(le|un|du|au|[mst]on)_présid [[ ent ]] T -> a~ ## le président [[ ent ]] T -> ## étaient mangent (? e~ ## viendra tien Sam [[ en ]] T -> E n ## amen LL [[ en ]] s?T -> e~ ## examen rien [[ en ]] (sT|CL) -> a~ ## entre pentathlon Ss [[ ept ]] (T|iè) -> E t ## sept septième S(Ch?|env|hiv?|trav|ti) [[ er ]] s?T -> E R ## fer cher hier hiver (th|w) [[ er ]] s?T -> 9 R ## brother power [[ er ]] s?T -> e ## parler léger d [[ e ]] sso?usT -> @ ## dessus dessous Sd [[ es ]] [bjnq]V -> e ## Desjardins desquels Sl [[ es ]] qV -> e ## lesquels (S|V)m [[ es ]] [dn]V -> e ## mesdames Dumesnil d [[ esh ]] V -> e z ## Deshormeaux S [[ est_ ]] V -> E t & # liaison: c'est ici S [[ est ]] T -> E ## il est Sr [[ es ]] V -> @ s ## resaisir resaluer Sr [[ e ]] s(s|tr(?!i)) -> @ ## ressembler restructurer S[cdlmst] [[ es_ ]] h?V -> e z & # liaison: mes amis, ces hommes S[cdlmst] [[ es ]] T -> e ## les des tes (Cr|rC) [[ es_ ]] C -> @ & ## fortes dames LL [[ es ]] T -> ## dames S [[ et ]] T -> e ## et S [[ eu ]] T -> y ## eu S [[ eus ]] T -> y ## j'eus S [[ eut ]] T -> y ## il eut [[ eu ]] rs?T -> 9 ## peur tracteurs [[ eu ]] [bfilnprv] -> @ ## meuble neuf fieul jeune [[ eu ]] -> 2 ## meute tueuse jeu gueuze S [[ eû ]] -> y ## eût [[ eû ]] -> 2 ## jeûne [[ e ]] x -> E ## exact [[ ey ]] (C|T) -> e ## dahomey ceylan [[ ey ]] -> E j ## asseye [[ ez_ ]] h?V -> e z & ## liaison: profitez-en [[ ez ]] T -> e ## nez mangez chez S(C+|qu) [[ e ]] T -> @ ## je te que (Cr|rC) [[ e_ ]] C -> @ & ## quatre pattes [[ e ]] T -> ## montre g [[ e ]] V -> ## mangeons (V|en)(C|qu) [[ e ]] ment -> ## vitement sûrement S[dr] [[ e ]] (ch|C[lr]) -> @ ## retracer degré recherche (Sl|tr) [[ e ]] C[hlr]?V -> @ ## Leclerc Lebrun entreprise [[ e ]] C(C|T) -> E ## infect pelle mettre ll [[ e ]] C -> ## actuellement guillemets V(ss?|v) [[ e ]] (g|p)V -> ## sauvegarde passeport [[ e ]] -> @ ## menue u [[ ë ]] -> ## ambiguë [[ ë ]] -> E ## citroën noël [[ é ]] -> e ## été [[ è ]] -> E ## règle [[ ê ]] -> E ## fête S [[ f ]] T -> E f ## f [[ ff ]] -> f ## affaire Sneu [[ f_ ]] (ans|heures)T -> v & # liaison: neuf ans [[ f ]] -> f ## feu S [[ g ]] T -> Z e ## g su [[ gg ]] [eéè] -> g Z ## suggérer suggestif [[ gg ]] -> g ## agglomérer ai [[ gni ]] -> n j ## craignions châtaignier [[ gn ]] -> n j ## agneau Squatre_?vin [[ gts_ ]] (V|h) -> z & ## quatre-vingts ans Squatre_?vin [[ gt_ ]] -> & ## quatre-vingt-un vin [[ gt_ ]] V -> t & # liaison: vingt ans vin [[ gt_ ]] (deux|trois|quatr|cinq|six|sept|huit|neuf) -> t & # liaison: vingt-trois [[ gt ]] s?T -> ## vingt doigts [[ gt ]] -> t ## vingtaine doigté ai [[ gu ]] il -> g y ## aiguillage in [[ gu ]] is -> g y ## linguiste [[ g ]] (C|[auâoû]) -> g ## langage S(ran|san|lon) [[ g ]] T -> ## rang sang long [[ g ]] T -> g ## grog gag goulag [[ g ]] -> Z ## congé george S [[ h ]] T -> a S ## h [[ _h ]] T -> _ a S ## p h d [dl] [[ _h ]] [uoô] -> _ ## d'huitre aujourd'hui d'hôte [[ _h ]] a -> - ## les haches [[ h ]] -> ## ahuri [[ ie ]] ment -> i ## remerciement balbutiement [[ i ]] es?T -> i ## parties [[ i ]] V -> j ## fermier portier patio renier S [[ ill ]] -> i l l ## illégal Sm [[ ill ]] -> i l ## mille v [[ ill ]] -> i l ## village u [[ ill ]] -> i j ## cuillière cueillir V [[ ill ]] -> j ## caillou [[ ill ]] -> i j ## famille [aeu] [[ il ]] s?T -> j ## bail deuil [[ imm ]] -> i m m ## immaculé [[ im ]] T -> i m ## karim [[ im ]] C -> e~ ## timbre [[ ing ]] s?T -> i N ## parking [[ in ]] h -> i n ## inhumain [[ inct ]] s?T -> e~ ## distinct [[ i ]] nn -> i ## innombrable [[ in ]] (C|T) -> e~ ## vin vingt [[ i ]] -> i ## cri [[ î ]] -> i ## abîme [[ în ]] (C|T) -> e~ ## vînimes [[ ïn ]] (C|T) -> e~ ## coïncider a [[ ï ]] -> j ## aïeul [[ ï ]] -> i ## ambiguïté S [[ j ]] T -> Z i ## j [[ j ]] -> Z ## adjoint joujoux S [[ k ]] T -> k a ## k [[ k ]] -> k ## képi S [[ l ]] T -> E l ## l [[ ll ]] -> l ## aller au [[ lt ]] -> ## hérault outi [[ l ]] s?T -> ## outil Sfi [[ ls ]] T -> s ## fils [[ l ]] -> l ## lit S [[ m ]] T -> E m ## m [[ mm ]] -> m ## pomme [[ monsieur ]] -> m @ s j 2 ## monsieur [[ montréal ]] -> m o~ R e a l ## Montréal [[ m ]] -> m ## film S [[ n ]] T -> E n ## n V [[ ng ]] T -> N ## parking meeting [[ nn ]] -> n ## panne [[ n ]] -> n ## une [[ ñ ]] -> N i ## niño cr [[ oc ]] s?T -> o ## escroc [[ o ]] ch -> o ## cochon [[ oe ]] ll -> w a ## moelleux S [[ oe ]] C -> 2 ## oesophage [[ o ]] eu -> ## soeur oeuf [[ o ]] eC -> o ## coefficient S [[ oi ]] gnon -> O ## oignons [[ o ]] ing -> u ## doing [[ oin ]] (C|T) -> w e~ ## coin [[ oi ]] -> w a ## poil [[ oê ]] l -> w E ## poêle [[ oî ]] -> w a ## boîte S [[ ok ]] T -> o k e ## OK [[ o ]] mm -> O ## comme dr [[ o ]] meT -> o ## vélodrome [[ om ]] [bp] -> o~ ## bombe n [[ om ]] s?T -> o~ ## nom noms [[ om ]] T -> O m ## www.web.com [[ on ]] T -> o~ ## mon [[ o ]] nn -> O ## bonne (z|chr) [[ o ]] nes?T -> o ## amazone [[ on ]] (?!h)C -> o~ ## donc alc [[ oo ]] l -> O ## alcool z [[ oo ]] -> o ## zoo [[ oo ]] -> u ## pool S[gs]al [[ op ]] s?T -> o ## galops salop Ssir [[ op ]] s?T -> o ## sirop Str [[ op ]] T -> o ## trop [[ o ]] sT -> o ## gros dos v [[ ost ]] T -> o ## Prévost [[ o ]] sV -> o ## poser [[ ot ]] s?T -> o ## mot dépots [cl] [[ oup ]] s?T -> u ## loups beaucoup [[ ou ]] -> u ## hibou brouillard [[ où ]] -> u ## où [[ oû ]] -> u ## coûter [[ oyes ]] T -> w a ## troyes [[ oy ]] V -> w a j ## noyer voyelles [[ oy ]] -> w a ## roy [[ o ]] z?T -> o ## zorro allégro berlioz [[ o ]] [mn]o -> o ## nono o[mn] [[ o ]] -> o ## monocorde [[ o ]] -> O ## sobre notions émotions [[ ôt ]] s?T -> o ## rôt [[ ô ]] -> o ## cône [[ ö ]] -> O ## angström S [[ p ]] T -> p e ## p [mr] [[ ps ]] T -> ## corps temps champs ch?am [[ p ]] s?T -> ## camp contrechamp dra [[ p ]] s?T -> ## draps sparadrap (ba|com) [[ p ]] t -> ## baptiser compte C [[ pt ]] s?T -> ## prompt exempt [[ ph ]] -> f ## phrase [[ pp ]] -> p ## appliquer [[ p ]] -> p ## pas S [[ q ]] T -> k y ## q [[ qu' ]] -> k ## qu'il [[ qu ]] -> k ## quatre n [[ q_ ]] c -> & ## cinq cent [[ q ]] -> k ## coq S [[ r ]] T -> E R ## r [[ right ]] -> R a j t ## copyright Ssu [[ rr ]] -> R R ## surréaliste ou [[ rr ]] -> R R ## courrai [[ rr ]] -> R ## erreur [[ r ]] -> R ## rien S [[ s ]] T -> E s ## s [[ s' ]] -> s ## s'amène [[ sç ]] -> s ## immisça [[ sch ]] (iz|ol|oo) -> s k ## schizophrène [[ sch ]] -> S ## schéma dé [[ sh ]] V -> z ## déshabiller [[ sh ]] -> S ## shérif [[ ss ]] -> s ## assez ai [[ s ]] em -> s ## vraisemblable ub [[ s ]] is -> z ## subsister an [[ s ]] on -> s ## chanson (V|CCan) [[ s ]] V -> z ## baiser transition S(mi|il|[dnv]o|écu) [[ s_ ]] V -> z & # liaison S(an?|[bcprv]a|e|dè|[dflmp]i|il|[dnv]o|écu|[dflpv]u|un) [[ s ]] T -> ## cas dos pas vus ils (S|[im])bu [[ s ]] T -> s ## bus nimbus #([cimnp]|[lu]l|Vs)u [[ s ]] T -> s ## focus phallus cumulus minus ([cimnp]|[lu]l)u [[ s ]] T -> s ## focus phallus cumulus minus [acio]tu [[ s ]] T -> s ## stratus cactus motus S(mar|sen) [[ s ]] T -> s ## sens mars Stou [[ s_ ]] (([lms]e|[nv]o|leur)s|ceux)T -> _ ## à tous les jours pour tous Stou [[ s ]] T -> s ## à tous les jours pour tous. LLL [[ s_ ]] V -> z & # liaison: arbres en avant LLL [[ s ]] T -> ## grands mesdames objets LLLs [[ _ ]] h?V -> z & # liaison: les arbres en avant [[ s ]] [bdgjv] -> z ## sbire [[ s ]] -> s ## verser sien S [[ t ]] T -> t e ## t [[ t' ]] -> t ## t'amène [[ tt ]] -> t ## attitude s [[ th ]] m -> ## asthme [[ th ]] -> t ## théorie hui [[ t ]] (P|T(?!C)) -> t ## huit aoû [[ t ]] T -> t ## août S [[ t ]] -> t ## tien tiers an [[ t ]] ia -> t ## Santiago V[mn]?[cpr]?(? s ## tertiaire initiation option [[ t ]] ie[lm] -> s ## partiel patiemment (mar|i|pa) [[ t ]] ien -> s ## martien vénitienne (Cu|cra|ner) [[ t ]] ies?T -> s ## minutie inertie démocratie (ne|ru) [[ t ]] s?T -> t ## brut rut net S(es|son|tou) [[ t_ ]] V -> t & # liaison: c'est un tout autre (a|[nrû]|V{2}|L{2}V|cha) [[ t ]] s?T -> ## fort chats eût peut point S(ra|[dfl]i|[lmps]o|[dfl]u) [[ t ]] s?T -> ## rat lit mot [[ t ]] -> t ## bataille [cg] [[ ueill ]] -> 9 j ## orgueilleux [cg] [[ ueil ]] T -> 9 j ## orgueil parf [[ um ]] s?T -> 9~ ## parfum [[ um ]] s?T -> O m ## album [[ um ]] [bp] -> 9~ ## humble [[ un ]] (C|T) -> 9~ ## emprunt brun lundi g [[ u ]] [aeioîâéèêy] -> ## fatigue [[ u ]] i -> H ## huitre nuit huile [[ u ]] -> y ## cruel nuage brut [[ û ]] -> y ## fûtes [[ ü ]] -> y ## bülcher S [[ v ]] T -> v e ## v [[ v ]] -> v ## cave S [[ w ]] T -> d u b l @ v e ## w LL [[ ware ]] T -> w E R ## hardware, software [[ w ]] -> w ## watt S [[ x ]] T -> i k s ## x [[ xs ]] -> k s ## exsuder Se [[ x ]] (V|h) -> g z ## exagérer exemple exhumer [aor]i [[ x ]] T -> ## voix paix prix Ssoi [[ x ]] V -> s ## soixante [aeo]u [[ x_ ]] V -> z & # liaison: foux en [aeo]u [[ x ]] T -> ## faux toux beaux foux jeux Sau [[ x ]] quel -> ## auxquels S[ds]i [[ x_ ]] (V|h) -> z & # liaison: six ans S[ds]i [[ x_ ]] neuf -> z & # liaison: dix-neuf S[ds]i [[ x_ ]] C -> & # liaison: six persones ([ds]i|eu) [[ x ]] iè -> z ## dixième deuxième S[ds]i [[ x ]] T -> s ## six, dix [[ x ]] -> k s ## lexique lexicaux vox [[ ym ]] [bp] -> e~ ## tympan [[ y ]] n(n|s?T) -> i ## [[ yn ]] -> e~ ## laryngite [[ y ]] -> i ## cryogénique myope S [[ z ]] T -> z E d ## z [[ zz ]] -> z ## razzia t [[ z ]] -> s ## tzigane [[ z ]] -> z ## zéro S([eou]n|[mst]on) [[ _ ]] h?V -> n & # liaison: un avion orange Scent [[ _ ]] (une?|huit|onze?)(T|ièm) -> _ # !liaison: cent onze Scent [[ _ ]] h?V -> t & # liaison: cent ans [[ _ ]] -> _ # espace [[ ' ]] -> # apostrophe [[ . ]] -> . [[ , ]] -> , [[ ; ]] -> , [[ : ]] -> : [[ ! ]] -> ! [[ ? ]] -> ? # Filtres pré-phonétisation # Attention: la partie "produite" n'est traitée que par les filtres # subséquents. # Attention: Lorsqu'on match S, T ou _ (espace) on le consomme. # Les classes B et E sont des équivalents de S et T mais sans ce problème. CLASS B (?:^|(?<=\s|P|\')) # limite gauche d'un mot CLASS E (?=$|\s|P) # limite droite d'un mot BciceroE -> "cicéro" BetcE -> "ètcétéra" Bm\.(?=_|$) -> "monsieur" BmbrolaE -> "m brola" BmmeE -> "madame" BmlleE -> "mademoiselle" Bp\.sE -> "postscriptum" Bst- -> "saint " Bste- -> "sainte " Bs\.t\.pE -> "s'il te plait" Bs\.v\.pE -> "s'il vous plait" Bquelqu'unE -> "quelquun" (?<=V)-t-(?=V) -> "-t'" (?<=V)(n?t)-(?=V) -> "\1-t'" B(à|de|vers)\sl'estE -> "\1 l'èst" BmailE -> "mél" # signe moins B-(N) -> "moins \1" # format numéro de téléphone (? " \1 \2 \3, \4 \5 \6, \7 \8 \9 \g<10> " (? " \1 \2 \3, \4 \5 \6 \7 " # Tiret entre chiffres (?<=N)-(?=N) -> " tiret " # traduit les points/virgules décimales: \s+\.(?=N) -> ", point " \s+,(?=N) -> ", virgule " \.(?=N) -> " point " ,(?=N) -> " virgule " # rajoute un espace entre un chiffre et une lettre: (\d)((?!_)\D) -> "\1 \2" ((?!_)\D)(\d) -> "\1 \2" # Recombine les nombres écrits avec un espace comme séparateur (? "\1" # autrement ajoute une virgule entre nombres séparés par des espaces # pour entre autres éviter confusion entre "3 1234" et "3234" (?<=N)\s+(?=N{2,}) -> ", " # Nombres (N)(?=N{12,}) -> "\1 " B0 -> "zéro " ([1-9]N*)(?=N{9}) -> "\1 milliard " ([1-9]N*)(?=N{6}) -> "\1 million " (? "mille " ([1-9]N*)(?=N{3}) -> "\1 mille " 1(?=N{2}T) -> "cent " ([2-9])00(?=T) -> "\1 cents " ([1-9])(?=N{2}) -> "\1 cent " 9(?=N) -> "quatre-vingt 1" 80 -> "quatre-vingts " 8(?=N) -> "quatre-vingt " 71 -> "soixante et onze" 7(?=N) -> "soixante 1" 61 -> "soixante et un" 6(?=N) -> "soixante " 51 -> "cinqante et un" 5(?=N) -> "cinquante " 41 -> "quarante et un" 4(?=N) -> "quarante " 31 -> "trente et un" 3(?=N) -> "trente " 21 -> "vingt et un" 2(?=N) -> "vingt " 16 -> "seize " 15 -> "quinze " 14 -> "quatorze " 13 -> "treize " 12 -> "douze " 11 -> "onze " 10 -> "dix " 1(?=N) -> "dix-" 9 -> "neuf " 8 -> "huit " 7 -> "sept " 6 -> "six " 5 -> "cinq " 4 -> "quatre " 3 -> "trois " 2 -> "deux " 1 -> "un " 0 -> "" # ponctuations prononcées si pas suivi d'un espace \.(?!($|\s)) -> " point " \,(?!($|\s)) -> " virgule " \?(?!($|\s)) -> " question " \!(?!($|\s)) -> " exclamation " \:(?!($|\s)) -> " deux points " \;(?!($|\s)) -> " point virgule " # prononce "tiret" quand il n'est pas entouré de lettres # FIXME #\-(?!L) -> " tiret " #(?!L)\- -> " tiret " # élimine les répétitions excessives (limite à 4 répétitions) (.)(\1){4,} -> "\1\1\1\1" # noms des autres symboles " -> " guillemet " \# -> " dièze " \$ -> " dollard " \% -> " pour-cent " \& -> " et " \( -> " ouvre parenthèse " \) -> " ferme parenthèse " \* -> " astérisque " \+ -> " pluss " \/ -> " slash " < -> " inférieur " = -> " égal " > -> " supérieur " \@ -> " att " \[ -> " ouvre crochet " \\ -> " backslash " \] -> " ferme crochet " \^ -> " circonflexe " \_ -> " souligné " ` -> " accent grâve " \{ -> " ouvre accolade " \| -> " barre " \} -> " ferme accolade " ~ -> " tilde " ¢ -> " cennt " ¥ -> " yenns " £ -> " livres " ° -> " degré " ± -> " plus ou moins " × -> " multiplié par " ÷ -> " divisé par " ¼ -> " un quart " ½ -> " un demi " ¾ -> " trois quarts " © -> " copyright " ® -> " registred mark " # If these get re-ordered, no production must include - after this one. - -> " " # les successions de consonnes inprononçables doivent être épelées B(C)(C)E -> "\1 \2" B(C)(C)(C)E -> "\1 \2 \3" B(C)(C)(C)(C)E -> "\1 \2 \3 \4" B(C)(C)(C)(C)(C)E -> "\1 \2 \3 \4 \5" ## https (C)(\1)(\1) -> " \1 \1 \1 " Br(C)(V)E -> " r \1 \2 " # enlève les espaces autour des ponctuations: \s*([\.\!\?\:\;\,\'])\s* -> "\1" # réduit les blancs \s+ -> " " # enlève les blancs à la fin \s+$ -> "" cicero-0.7.2/LISEZ-MOI0000644000076400007640000001324411026545563012704 0ustar niconicoLe Cicero TTS : un moteur de synthèse vocale petit, rapide et libre Copyright 2003-2008 Nicolas Pitre Copyright 2003-2008 Stéphane Doyon Version 0.7.2, juin 2008 Le présent logiciel est distribué en vertu de la GPL de GNU. Pour plus de détails, consulter le fichier COPYING dans la présente archive. Pour le moment, notre moteur TTS traite bien le français et en est qu'à ses premiers balbutiements d'anglais, mais nous espérons qu'il pourra un jour aussi " parler " bien l'anglais ou d'autres langues. Il se sert de règles contextuelles afin de générer les phonèmes à partir du texte et s'appuie sur MBROLA (http://tcts.fpms.ac.be/synthesis/mbrola.html) pour produire la sortie audio à partir de ces phonèmes. Le Cicero TTS est implémenté à l'aide du langage de programmation Python. Nous avons conçu le Cicero TTS dans le but de répondre à nos besoins en tant qu'utilisateurs aveugles. Il peut être intégré à un logiciel de revue d'écran : actuellement, il n'a été utilisé qu'avec BRLTTY seulement, mais il devrait s'adapter facilement à d'autres logiciels. Nous avons privilégié la rapidité et l'intelligibilité plutôt que la prosodie optimale. Nous cherchions à obtenir un temps de réponse rapide, la capacité de couper la parole et de passer à un différent énoncé instantanément, une bonne intelligibilité malgré une prononciation imparfaite, le suivi vocal dans le texte, la simplicité (hackability) et un code source relativement petit. Le Cicero TTS n'effectue aucune forme d'analyse grammaticale et ne possède pas encore de dictionnaire, de sorte que la prononciation n'est pas toujours parfaite. Nous avons néanmoins réussi à appliquer des règles de prononciation relativement sophistiquées et, à notre avis, les résultats sont éloquents. Nous ne sommes vraiment pas des linguistes : nous sommes toutefois des utilisateurs aveugles exigeants. Nous nous servons de ce moteur sérieusement dans le cadre de nos activités professionnelles depuis plus d'une année déjà. Il s'agit d'une version plutôt jeune du Cicero TTS, et la qualité ne pourra que s'améliorer. L'installation et l'intégration se trouvent certainement à un stade préliminaire et la prononciation est constamment peaufinée. La liste de ce qui reste à accomplir est longue. Remerciements : Nous nous sommes grandement inspirés des implémentations antérieures suivantes de l'algorithme de phonétisation : Le perl_tts de David Haubensack : ftp://tcts.fpms.ac.be/pub/mbrola/tts/French/perl_tts.zip Le perl_ttp d'Alistair Conkie : ftp://tcts.fpms.ac.be/pub/mbrola/tts/English/perl_ttp.zip Requis : - python 2.3 ou version ultérieure (principalement pour le module ossaudiodev). - mbrola : testé avec mbrola 301h. - base de données vocales mbrola : testé avec fr1. - système Linux muni d'une carte de son fonctionnant avec OSS sound API ou l'émulation OSS d'ALSA. Installation : À ce stade-ci, nous l'exécutons directement dans le répertoire contenant le présent LISEZ-MOI. - copier config.py.sample sous le nom config.py - éditer config.py de manière à ce que les chemins pointent vers le bon endroit - tester en exécutant tts_shell.py puis en tapant du texte Utilisation de BRLTTY avec suivi vocal complet dans le texte : Adresse du site BRLTTY : http://mielke.cc/brltty/ Le pilote " External Speech " de BRLTTY est utilisé. - copier brl_es_wrapper.sample sous le nom brl_es_wrapper - éditer brl_es_wrapper de manière à ce que les chemins pointent vers le bon endroit - dans /etc/brltty.conf, inscrire les lignes suivantes : speech-driver es speech-parameters program=/home/foo/cicero/brl_es_wrapper,uid=500,gid=500 en indiquant le chemin où vous avez extrait la présente archive de même que les bons uid et gid de l'utilisateur - redémarrer BRLTTY - Si le Cicero TTS reste muet, vérifier le fichier journal (log) qui a été spécifié dans brl_es_wrapper Outils disponibles dans la présente archive : - tts_shell.py : Prononce de façon " interactive " le texte reçu sur stdin, puis le reproduit sur stdout, mais seulement au fur et à mesure que le texte est prononcé. Entrez une ligne vide pour obtenir le silence. Taper ctrl-D pour quitter. - bulktalk.py : Prend du texte à partir de stdin (possiblement d'un "pipe") ou en paramètre puis le prononce directement par l'entremise de MBROLA, ou sauvegarde le fichier audio correspondant. - wphons.py : Traduit une phrase donnée en paramètre ou sur stdin en une série de phonèmes. Montre chaque règle lorsqu'elle est appliquée. Permet de relever les lacunes des règles de prononciation. - saypho.py : Prend une séquence de phonèmes sur cmdline et génère les sons correspondants afin de tester la prononciation. Lance mbrola et fait entendre le résultat avec sox. - regress.py : checklist.fr contient une liste d'expressions et leur équivalent phonétiques vérifié. Traduit chaque expression en phonèmes au moyen du fichier de règles courant et s'assure que le résultat est identique à la prononciation de référence. Sert à faire des tests de régression lorsque les règles sont modifiées. - testfilters.py : Prend du texte en paramêtre ou sur stdin, le fait passer par les filtres seulement puis imprime le résultat. Vos commentaires sont appréciés : Si vous voyez des améliorations possibles, que vous avez relevé des bogues ou que vous souhaitez simplement faire des commentaires (positifs ou négatifs) à propos de notre programme, n'hésitez pas à nous écrire par courriel aux adresses suivantes : Nicolas Pitre Stéphane Doyon cicero-0.7.2/testfilters.py0000755000076400007640000000240711026545563014375 0ustar niconico#!/usr/bin/python # -*- coding: utf-8 # This file is part of Cicero TTS. # Cicero TTS: A Small, Fast and Free Text-To-Speech Engine. # Copyright (C) 2003-2008 Nicolas Pitre # Copyright (C) 2003-2008 Stéphane Doyon # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2. # See the accompanying COPYING file for more details. # # This program comes with ABSOLUTELY NO WARRANTY. # Takes text as input and shows the output of the filters stage. import sys import setencoding import ttp def trace0(msg): sys.stderr.write(msg) sys.stderr.flush() def trace(msg): trace0(msg+'\n') def noop_trace(msg): pass if __name__ == "__main__": setencoding.decodeArgs() setencoding.stdfilesEncoding() if len(sys.argv) > 1: words = sys.argv[1:] trace = trace0 = noop_trace else: words = sys.stdin.readlines() words = [w.strip() for w in words] trace('Got %d words' % len(words)) for i,w in enumerate(words): trace0('%6d/%6d \r' % (i+1,len(words))) str = ttp.word2filtered(w) sys.stdout.write('"%s" -> "%s"\n' % (w,str)) sys.stdout.flush() trace('done ') cicero-0.7.2/sndoutput.py0000644000076400007640000002234111026545563014066 0ustar niconico# -*- coding: utf-8 # This file is part of Cicero TTS. # Cicero TTS: A Small, Fast and Free Text-To-Speech Engine. # Copyright (C) 2003-2008 Nicolas Pitre # Copyright (C) 2003-2008 Stéphane Doyon # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2. # See the accompanying COPYING file for more details. # # This program comes with ABSOLUTELY NO WARRANTY. # This module deals with output to soundcard through OSS using # python's ossaudiodev module. # It starts off a new thread to feed audio in a timely manner. It # handles buffering and provides the current listening position. import ossaudiodev from threading import * import struct, sys, time, array, fcntl import tracing def trace(msg): mod = 'sndoutput' tracing.trace(mod+': '+msg) import config CHUNK = 2048 # samples # Buffer max between 3 and 5secs of audio WAIT_HI_THRESH = 6.0 WAIT_LOW_THRESH = 4.0 def mkInt(x): return struct.unpack('i', struct.pack('I', x))[0] SNDCTL_DSP_SETFRAGMENT = mkInt(0xc004500aL) FRAG = mkInt((0xFFFFL << 16) | 11) FRAGCODE = array.array('B', struct.pack('i', FRAG)) class SndOutput(Thread): def __init__(self, rate): Thread.__init__(self) self.rate = rate self.lock = Lock() self.condMoreInput = Condition(self.lock) self.buf = '' self.pendingBuf = '' self.finishFlag = self.pendingFinishFlag = 0 self.resetFlag = 0 self.spokenSamps = 0 self.err = None self.setDaemon(1) self.dsp = None self.bufsize = -1 self.silence = '' self._open() self.dsp.close() self.dsp = None self.start() def checkErr(self): """Check if thread died and report error.""" if self.err: raise self.err[0], self.err[1], self.err[2] def reset(self): """Call this to reset spokenSamps and/or to interrupt.""" self.checkErr() self.lock.acquire() self.resetFlag = 1 self.buf = self.pendingBuf = '' self.finishFlag = self.pendingFinishFlag = 0 self.spokenSamps = 0 self.condMoreInput.notify() self.lock.release() def inputSleepTime(self): """Returns how long we recommend the app to go to sleep, nonzero when we have too much audio data buffered.""" self.checkErr() self.lock.acquire() if float(len(self.buf)/2) /self.rate > WAIT_HI_THRESH: t = float(len(self.buf)/2) /self.rate - WAIT_LOW_THRESH else: t = 0 self.lock.release() return t def give(self, buf): """Provide new sound data to be played.""" self.checkErr() self.lock.acquire() if self.finishFlag: self.pendingBuf += buf self.pendingFinishFlag = 0 trace('give %d into pending buf' % len(buf)) else: self.buf += buf trace('give %d into main buf' % len(buf)) self.condMoreInput.notify() self.lock.release() def allGiven(self): """Inform that no more sound might be coming. This MUST be called at the end of an utterance, but more input can still be appended afterward if necessary.""" self.checkErr() self.lock.acquire() if self.pendingBuf: self.pendingFinishFlag = 1 trace('set pendingFinishFlag') else: self.finishFlag = 1 trace('set finishFlag') self.condMoreInput.notify() self.lock.release() def spokenPos(self): """Returns number of samples played out for this utterance.""" self.checkErr() self.lock.acquire() s = self.spokenSamps self.lock.release() return s def _open(self): if not self.dsp: start = time.time() while 1: try: self.dsp = ossaudiodev.open(config.snd_dev, 'w') break except IOError, x: if x.errno != 16: raise trace('device is busy') if self.bufsize==-1 and time.time() -start > 4.0: raise 'Sound device is busy' time.sleep(0.5) self.dsp.setparameters(ossaudiodev.AFMT_S16_LE, 1, self.rate, 0) fcntl.ioctl(self.dsp.fileno(), SNDCTL_DSP_SETFRAGMENT, FRAGCODE, 1) self.bufsize = self.dsp.bufsize() self.silence = struct.pack('H', 0)*self.bufsize def _write(self, buf): assert len(buf)/2 >= CHUNK b = buf[:2*CHUNK] self.lock.release() try: r = self.dsp.write(b) except IOError, x: if x.errno != 11: raise r = 0 self.lock.acquire() return r def run(self): try: self.run2() except: self.err = sys.exc_info() try: self.lock.release() except thread.error: pass def run2(self): self.writtenSamps = 0 self.silentSamps = 0 self.lock.acquire() while 1: while 1: # we will wait unless... if self.resetFlag: break if self.finishFlag: if self.buf or self.pendingBuf or self.dsp: # utterance still in progress break else: enough = (self.dsp and CHUNK) or 3*CHUNK if len(self.buf)/2 >= enough: break if self.dsp: trace('Not enough in buf: only %d' % (len(self.buf)/2)) # So either utterance finished, # or not enough input to start and we know more is coming, # or not enough input for a full chunk and we know # more will come. if not self.buf: trace('waiting for input') else: trace('waiting for more input') t = time.time() self.condMoreInput.wait() t = time.time() -t trace('Got more input, wait took %.4fs' % t) if self.resetFlag: trace('resetting') self.resetFlag = 0 self.writtenSamps = 0 self.silentSamps = 0 if self.dsp: self.dsp.reset() self.dsp.close() self.dsp = None continue if self.pendingBuf: # If either we're not far enough to have worried about # finishing yet, or were completely done speaking the # previous utterance (means waiting for this to be true): if self.buf or not self.dsp: if self.buf: trace('Tacking pendingBuf on existing buf') else: trace('Restarting with pending buf') self.buf += self.pendingBuf self.pendingBuf = '' self.finishFlag = self.pendingFinishFlag self.pendingFinishFlag = 0 self.silentSamps = 0 self._open() assert self.buf or self.finishFlag if self.finishFlag: b = self.buf + self.silence else: b = self.buf r = self._write(b) if self.resetFlag: continue br = min(r, len(self.buf)) sr = r-br self.buf = self.buf[br:] self.writtenSamps += br/2 self.silentSamps += sr/2 if br: trace('wrote %d bytes' % br) if sr: trace('sent silence: %d bytes' % sr) buffed = self.dsp.obufcount() self.spokenSamps = self.writtenSamps \ - max(buffed -self.silentSamps, 0) trace('set spokenSamps %d' % self.spokenSamps) if not self.buf: if self.finishFlag: if buffed <= self.silentSamps: trace('graceful close') self.dsp.reset() self.dsp.close() self.dsp = None elif buffed <= min(self.bufsize/4, self.rate/5): # FIXME: Actually we probably don't get here: we're # probably stuck waiting on condMoreInput. trace('underrun mitigate') self.dsp.sync() self.dsp.close() self.dsp = None if 0 and __name__ == "__main__": s = SndOutput() import time turns = 0 while 1: turns += 1 b = sys.stdin.read(8192) if not b: break s.give(b) t = s.inputSleepTime() if t: trace('inputter sleeps %f' % t) time.sleep(t) if turns % 20 == 0: s.allGiven() trace('pause') time.sleep(9) s.reset() s.allGiven() time.sleep(10) cicero-0.7.2/version.py0000644000076400007640000000110511026545563013501 0ustar niconico# -*- coding: utf-8 # This file is part of Cicero TTS. # Cicero TTS: A Small, Fast and Free Text-To-Speech Engine. # Copyright (C) 2003-2008 Nicolas Pitre # Copyright (C) 2003-2008 Stéphane Doyon # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2. # See the accompanying COPYING file for more details. # # This program comes with ABSOLUTELY NO WARRANTY. version = '0.7.2' date = 'June 2008' name = 'Cicero TTS' banner = name +' ' +version cicero-0.7.2/setencoding.py0000644000076400007640000000365511026545563014332 0ustar niconico# -*- coding: utf8 # This file is part of Cicero TTS. # Cicero TTS: A Small, Fast and Free Text-To-Speech Engine. # Copyright (C) 2003-2008 Nicolas Pitre # Copyright (C) 2003-2008 Stéphane Doyon # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2. # See the accompanying COPYING file for more details. # # This program comes with ABSOLUTELY NO WARRANTY. # # Pseudo-automated charset conversion for std{in,out,err} and program # args, so we can work with unicode internally. import codecs, locale, sys # Inspired from http://kofoto.rosdahl.net/trac/wiki/UnicodeInPython def get_file_encoding(f): if hasattr(f, "encoding") and f.encoding: e = f.encoding else: e = locale.getpreferredencoding() if e == 'ANSI_X3.4-1968': # fancy name for ascii # We're sure to have accents and ascii is sure not to work, let's # just guess UTF-8. (An alternative might be to use the 'replace' # error handler...) e = 'UTF-8' return e # Wrap std{in,out,err} with versions that auto decode/encode. # 0 means guess charset, None means don't install a wrapper. # Some caveats: make the file unbuffered / nonblocking BEFORE. And the # wrapper won't do some stuff like isatty() for instance... def stdfilesEncoding(sin=0, sout=0, serr=0): if sin is 0: sin = get_file_encoding(sys.stdin) if sin is not None: sys.stdin = codecs.getreader(sin)(sys.stdin) if sout is 0: sout = get_file_encoding(sys.stdout) if sout is not None: sys.stdout = codecs.getwriter(sout)(sys.stdout) if serr is 0: serr = get_file_encoding(sys.stderr) if serr is not None: sys.stderr = codecs.getwriter(serr)(sys.stderr) # Decode program arguments def decodeArgs(): sys.argv = [a.decode(sys.getfilesystemencoding()) for a in sys.argv] cicero-0.7.2/top10000fr.txt0000644000076400007640000025522210542130500013710 0ustar niconicode la le et les des en un du une que est pour qui dans a par plus pas au sur ne se Le ce il sont La Les ou avec son Il aux d'un En cette d'une ont ses mais comme on tout nous sa Mais fait été aussi leur bien peut ces y deux A ans l encore n'est marché d Pour donc cours qu'il moins sans C'est Et si entre Un Ce faire elle c'est peu vous Une prix On dont lui également Dans effet pays cas De millions Belgique BEF mois leurs taux années temps groupe ainsi toujours société depuis tous soit faut Bruxelles fois quelques sera entreprises F contre francs je n'a Nous Cette dernier était Si s'est chez L monde alors sous actions autres Au ils reste trois non notre doit nouveau milliards avant exemple compte belge premier s nouvelle Elle l'on terme avait produits cela d'autres fin niveau bénéfice toute travail partie trop hausse secteur part beaucoup Je valeur croissance rapport USD aujourd'hui année base Bourse lors vers souvent vie l'entreprise autre peuvent bon surtout toutes nombre fonds point grande jour va avoir nos quelque place grand personnes plusieurs certains d'affaires permet politique cet chaque chiffre pourrait devrait produit l'année Par rien mieux celui qualité France Ils Ces s'agit vente jamais production action baisse Avec résultats Des votre risque début banque an voir avons qu'un qu elles moment qu'on question pouvoir titre doute long petit d'ailleurs notamment FB droit qu'elle heures cependant service Etats-Unis qu'ils l'action jours celle demande belges ceux services bonne seront économique raison car situation Depuis entreprise me nouvelles n'y possible toutefois tant nouveaux selon parce dit seul qu'une sociétés vient jusqu quatre marchés mise seulement Van semble clients Tout Cela serait fort frais lieu gestion font quand capital gouvernement projet grands réseau l'autre données prendre plan points outre pourtant Ainsi ni type Europe pendant Comme mesure actuellement public dire important mis partir parfois nom n'ont veut présent passé forme autant développement mettre grandes vue investisseurs D trouve maison mal l'an moyen choix doivent NLG direction Sur simple période enfants dollars personnel assez programme général banques eux semaine président personne européenne moyenne tard loi petite certaines savoir loin explique plupart jeunes cinq contrat Banque valeurs seule rendement nombreux fonction offre client activités eu environ ministre cadre sens étaient sécurité recherche Paris sorte décembre Son suite davantage ensuite janvier donne vrai cause d'abord conditions suis juin peine certain septembre sommes famille l'indice pris laquelle directeur qu'en propose gens derniers étant fut chose portefeuille obligations afin différents technique Aujourd'hui ailleurs P l'ensemble américain ventes Selon rue livre octobre vraiment sein Or dollar Enfin haut Plus petits porte tel durée domaine aurait jeune présente passe PC lorsque choses puis Vous aucun l'un n'en tandis coup existe propre carte crise importante atteint revenus montant forte ici s'il Quant vu rapidement j'ai ville etc mars s'en mon premiers bas marque véritable ligne longtemps propres devant passer départ pu total série quoi particulier concurrence élevé position connu principe tendance court n pages évidemment résultat aura parmi Sans américaine face trouver durant femmes construction désormais distribution telle difficile autour européen pratique centre vendre juillet mai région sociale filiale film h besoin mode Pas représente réalité femme vaut Tél aucune hommes donner titres l'Europe nombreuses différentes moyens formation chiffres Générale dix prochain l'Etat genre bureau communication participation gros pourquoi estime devient réalisé création novembre l'évolution pourra semaines consommation faible terrain site droits moitié puisque Du reprise compris projets avril vont call donné simplement six firme perte Bien Philippe sait prend vite via stratégie vos jeu J petites marketing presque Michel manque réaliser financiers Car Comment voiture chef constitue Internet J'ai enfin net charge nature second payer actuel Elles investissements dispose financier d'achat membres date avaient gamme revanche comment décision l'avenir tour actionnaires s'y solution créer l'économie concerne l'époque belle lequel tél seconde version Pays-Bas cher chacun lire techniques décidé mouvement conseil nécessaire meilleur double sujet généralement restent celles politiques malgré confiance homme d'actions Certains ayant papier commerce Région Wallonie Windows termes met contraire informations l'industrie trimestre E différence certaine formule jusqu'au voit programmes actuelle permis dossier Quand l'heure guerre acheter rendre février ma l'emploi main voire bons technologie européens Sa éléments unique l'eau venir générale courant suffit l'ordre conserver maximum force fax Que largement milliard soient Pierre devenir l'Union franc minimum mort responsable possibilité presse affaires longue travers M BBL relativement moi Deux présence européennes devraient groupes ensemble santé New pense bénéfices but compagnie publique coeur revenu mesures table nettement questions d'avoir permettre l'homme Chez retour qu'elles C majorité potentiel moindre récemment secteurs réduction large traitement perdu étrangers parents l'une fond capacité vitesse activité l'exercice l'objet quel tient taille éviter risques Jean Pourtant Allemagne parler propos quant signifie voie jouer prévoit blanc noir parti logiciel continue Notre bois meilleure l'argent perspectives développer celui-ci oeuvre structure suivre tiers prise professionnels raisons néanmoins preuve social bénéficiaire couleurs mondial Cet maintenant essentiellement prévu Japon prévisions centrale Alors international yeux PME l'a ait bonnes opérations pied l'art pourraient Londres juge devra uniquement corps divers Parmi numéro réduire Tous texte tenu budget l'étranger pression mes n'était style économiques Jacques montre population analystes S processus placement classique dividende rester publics fortement plein wallonne DEM Express faudra travailler Crédit directement prime Flandre crédit monnaie précise appel Autre travaux l'occasion juste Chaque put tableau terre permettent devenu rouge mémoire partenaires rapide travailleurs joue objectif salle parle musique milieu d'entreprise autorités chute régime d'autant liste opération bout performances électronique haute responsables lancé voitures patron Malgré affiche situe B l'image études Microsoft condition retrouve Aux revient Belgacom route Ensuite Luxembourg campagne comptes hors culture Commission d'entre possibilités semestre actifs finalement internationale l'achat monétaire passage of justice page tels poids celle-ci commercial entendu l'investisseur mondiale accord diverses totalement fil clair vin biens euro York parfaitement viennent division réseaux principal lancer supérieur atteindre référence téléphone management vins proche collection fiscale Ceci informatique investissement volume matériel publicité train coupon progression tenir protection l'aide couleur nouvel Lorsque change changement garantie somme Belge plaisir fils laisse importants privé Ses besoins oeuvres américains relations peau moteur augmentation suivi volonté beau bancaire laisser bureaux principalement intéressant logiciels sommet l'activité d'en vivre élevés Robert contrats oublier performance réponse d'exploitation concept obtenir poste attendre lignes consiste augmenté vert Ou figure mot développé l'histoire magasins collaboration répondre TVA holding G livres convient fonctions fera pouvait million Paul britannique d'entreprises voix Grande-Bretagne disque affaire minutes quelle contexte limite mains commun réduit Pourquoi particuliers verre wallon d'Etat allemand effets Chine meilleurs rend applications d'ici procédure l'opération devait profit méthode pose commence idée l'Internet d'eau créé nuit Nord capitaux options consommateur cartes soi métier probablement aller d'investissement facile International importantes Marc capitale devise prochaine transport Street demander utilisateurs l'affaire image l'idée propriétaire facilement publiques croire disponible Louis d'or veulent Charleroi Ne consommateurs devises difficultés sort national machines annoncé choisi découvrir soutien avez perdre cuisine telles D'autres travaille R ouvert phase certainement télévision pratiquement annuel bord paiement Bank institutions seuls arrive constate marques nationale regard représentent Belges état Qui libre rachat Toutefois portes sortir commandes permettant manager fiscal cinéma histoire zone sauf avantages l'information voici dur effectivement puisse réel The puissance fixe Belgium contact époque rythme principaux vendu utilisé étude Leur sensible Bref rencontre L'entreprise spécialistes brut mauvais néerlandais supplémentaire mots reprises nécessaires Non soir Prix machine penser CD parts comprend fusion acquis totale voyage logique l'échéance concurrents idées trouvé dette Sud réellement financement disponibles vieux lance marge dirigeants avis changer conséquence sociales supérieure Certes faisant ordinateur partenaire warrant fabrication redressement suffisamment délégué pourront poursuit chemin emplois l'environnement réalise FRF évolution Cour automobile Premier ancien note parties pension professionnel assure garder Rien Actuellement DE S'il l'administration Guy est-il IBM climat d'acheter SICAV département sept partout immobilier lancement rating réussi patrimoine feu expérience Anvers anciens graphique Fortis faveur retrouver droite responsabilité commande Kredietbank d'argent direct l'inflation n'avait utiliser tonnes l'origine connaissance acheté Ici américaines clairement semblent biais futur neuf chance faillite km équipe musée compagnies documents pertes sortie m'a seraient d'autre choisir l'instant tellement industriel précompte d'Europe immédiatement avantage qu'au constituent déchets sport van demeure garde maisons Solvay conséquences KB l'offre active dépenses donnent employés sites élections détient n'importe obligation fruits véhicule l'égard Conseil investi mission profiter visite comprendre professionnelle affirme l'intérieur Wall charges privée rares succession liberté rentabilité suivant efficace assurer images agences impossible m John enfant fournisseurs photo salaires Avant compter l'Est disposition formes bénéficiaires lesquels maintenir précisément couple enregistré recul offrir peur hauteur centres voulu industrielle positif Luc administrateur intéressante commerciale interne pleine passant vision GSM faits retard certes l'air lundi Outre porter écrit cesse locaux délai trouvent classiques commencé réalisée Alain vigueur gagner Celui-ci Philips ceux-ci favorable pouvoirs participations annonce génération élément devenue touche conseils devoir mer souligne respectivement rapports vacances lieux naturellement d'y lorsqu'il statut USA ceci destiné défaut objectifs récente saison d'art industriels Suisse catégorie complexe huit l'obligation fisc obtenu repris occupe sérieux émis Quelques comportement limité vingt conjoncture gauche marche d'origine l'utilisateur ordre mobilier parcours perspective normes recours l'esprit Communauté annuelle T lecteur objets fabricant niveaux Entre réalisation amateurs conséquent présenter Celle-ci vise types détail mauvaise professeur progressé signe passée approche p Reste return jardin l'espace flamand Namur bilan Vif sensiblement Trois utilise commune dimanche option partis analyse films surface warrants GBP prises secret historique journée l'ancien Pendant allemande d'assurance André fille l'importance proposer avions x augmenter parc Delhaize the Lors limitée appareils villes au-dessus diminution prochaines servir Bernard commission faiblesse plus-value souhaite internationales producteur producteurs code belles cabinet fonctionnement FF gérer cm mouvements pratiques régions dossiers meilleures Parce entrée vendredi actif sociaux supplémentaires café message physique Société communes dizaine faute sélection source facteurs milliers soleil tirer concernant Bourses fallait sentiment bénéficier débat l'Allemagne élevée ouvrage police pouvez attention a-t-il bel constructeurs contribuable moderne passion primes in suit auquel dépasse spécialisée bruxellois déclaration multiples quartier vidéo dépend l'école liquidités correction CA comité Web cherche filiales Sous signé leader calcul gaz D'abord Rens artistes déficit cadres fédéral probable remboursement and efforts restaurant Toutes couverture domicile soins devront luxe complet danger indispensable syndicats comporte faite juridique langue rendez-vous d'informations demandé respect continuer l'organisation lesquelles local l'impression n'existe rare restructuration automatiquement plat boursier sol c'était cotées décide L'action Cependant Certaines matériaux ordinateurs tradition V progressivement capable classe familiale réserve fonctionne solutions LA fabricants paie Finances l'été réelle changé masse unités considéré fer auront noms riche Patrick proposé salon territoire fixé magasin candidats marges asiatique inférieur réaction fleurs l'effet record tribunal recettes poursuivre dessous portant Aussi Sabena acteurs dehors constructeur l'auteur relation offrent spectaculaire LUF produire confort familles investir reprend sert montrer mérite places Soit judiciaire textes quasi SNCB jeux permettra étudiants membre photos positions sud Cockerill lendemain cent gagné japonais l'absence mark pointe solide Voici anglais n'ai présentent décisions législation médias victimes écran nécessairement découverte l'assuré club environnement noter crée exportations négociations Jan répond BEL entier business peinture s'était voisins faibles location nord promotion technologies auraient caisse entend simples maladie menu chances commerciaux printemps Benelux poser Asie l'utilisation usage PIB actionnaire prennent résistance Dow II surprise Etats mariage nécessité Puis cote Plusieurs beauté exclusivement lettre payé rendu s'ils software utile gestionnaires bénéficie procédé vaste crois normal Centre construire démarche emprunts naissance D'autant Co d'information distance tourner Club attendant quantité roi l'assureur tourne ajoute bancaires ajouter géant automatique faux attend litres présenté argent confirme indépendants l'ordinateur énorme destinés l'avantage véhicules ressources standard auparavant construit Quelle principales quelqu'un disposer global écoles Quel réputation fameux rappelle conseille heure veille difficulté l'état limites commerciales samedi palais vend vit Tractebel connaissent reprendre village emploi amis budgétaire croit mises souci contient habitants Weekend bras beaux bruxelloise faisait introduit intérieur outils précis chercheurs taxe salaire transactions Christian chambre portée réflexion AG C'était d'emploi hasard matin assureurs réforme Beaucoup fournir recherches liés tenue proposent aide ferme l'enfant l'or secondes CGER contenu quotidien flamande centaines course billet critique l'arrivée naturel principale support week-end Dehaene Gand chargé économies Nos augmente guide proposition laissé spécialiste francophones importance vent conception préférence spectacle avenir d'entrée grave commencer d'années diminuer chercher bonheur dizaines LE d'environ exactement outil scénario Jones coups émissions éventuellement Royale l'agence soumis d'exercice lecture monter Grand central exigences assuré contacts consacré l'attention d'administration due faut-il réussite échéance recevoir tableaux arriver évident PS art Italie amélioration auteurs estimé quinze Russie demain précédent vendeur événements autrement experts fortes furent possibles circonstances placer publication l'écran réserves sauce venu Charles collaborateurs implique l'assurance obligataire établi CD-Rom H forcément l'essentiel l'enseignement remarquable vol Claude tourisme internationaux directe compétences conseiller facteur l'est plastique rarement Royal affiché lutte relative actuels envie l'équipe ministres secrétaire capitalisation langage positive circulation convaincre notion visage vouloir ajoutée caractéristiques Eric Union paix puisqu'il courrier disposent développe présentation barre comparaison déterminer firmes fournisseur informatiques luxembourgeois achats solde Serge globale propriété stratégique Renault partage porté sources Kong cour destinée N absolument branche l'objectif ouvre plans productivité Résultat améliorer d'obtenir joué Parlement dépit fichiers personnalité constitué gestionnaire né profession qualités conscience médecin celles-ci design décor faudrait participer appelle forces suisse appareil conduite D'une longueur tarifs vérité lien locales francophone clubs correspond coupons d'émission estiment défi protéger réalisés d'emplois d'éviter l'ouverture méthodes revenir superbe volontiers document nommé tente financer scientifique Georges travaillent l'investissement lié zones aime lettres ouverte Hong L'année murs philosophie rappeler utilisés suivante d'année représentant traduit remettre situé différente longs économie discours distributeur domaines l'introduction régional faites italien restera usine Group l'informatique personnage portent attendu l'option Jean-Pierre articles changements fallu léger mener propriétaires spécifique récupérer voyages procéder locale médecins privés transmission concurrent courte quart baisser pieds publié Ford menace réunion transfert composé dimension personnages ralentissement conclusion l'usage agents parfum rémunération difficiles l'entrée mettent pierre proches réglementation salles grimpé prochains prévue électrique dynamique exposition installé plancher distributeurs déclare connue n'avons préparation réalisées beurre opérateurs achat province spécifiques Albert l'usine l'existence renforcer téléphonique comptable effectuer trafic degré l'ont définitivement humain optique remarque talent appelé modifier définition peintre respecter stade statistiques certificats s'attend limiter livraison placements raconte volumes immobiliers Fax anciennes chevaux médicaments Peter feuilles football identique pouvons remise structures tenter accords cotisations indice neutre Mon constituer d'accord montrent placé loyer proximité voient épouse Canada entrer postes précision cité concours patrons populaire pétrole négatif allemands d'activité roman victime italienne ménages repas PetroFina langues tendances D'autre pire prudence savent Néanmoins conduit mille rénovation égard Américains exercice l'étude s'impose avance effectué fortune fournit lecteurs Morgan découvert l'inverse différent emploie bleu royal technologique télécommunications Amsterdam fiscales indique information lourd signal Ed Mieux aider ancienne apporte nette prestations publicitaires sensibles communauté l'émission lit volatilité étape assurance jusqu'en lancée résoudre garanti modification revue spéciale www chacune l'analyse différences messages priorité recommandation récent charme dividendes Olivier passent finale immeubles logement pourcentage rire stabilité difficilement défense l'ancienne magazine D'un Y eaux jeunesse l'intention continuent révolution étonnant organisation constater dos emprunt oui éditions Daniel sel utilisée compartiment publicitaire EN article bande capacités centrales considérée milieux occasion quasiment pouvant Vermeulen-Raemdonck visiteurs chambres considérablement demi découvre essentiel broker dettes mardi reconnaissance salariés formules grosse heureux perd radio allait multimédia partiellement seules Gérard Oui Securities toucher jugement l'oeuvre considérer remplacer couvrir précieux segment dessins espace indices refuse chefs exemples rejoint spécialisé l'amour l'exportation objet précédente rose versions d'études destination Encore deviennent ET l'Italie personnelle plats vingtaine l'expérience virus Faut-il chasse longues Toute bases cotée final monnaies travaillé apporter aspects disparu David Management port racheter relever Celui ING catalogue centaine chaleur profil représentants SA conclu réside scientifiques Chambre secondaire Fin serveur XIXe exige grimper immeuble l'Université montants paysage vendus ton assurances catégories dure décote soutenir édition dangereux agréable voulait combien d'application disparition optimiste plus-values tomber erreur l'augmentation situations spécialisés subi suivent Jusqu'au classement l'exemple norme rentable sang socialiste tombe Justice attitude mines qu'aux liée plantes vague General l'immobilier légumes Ceux-ci conflit excellent licence travailleur appris est-elle gagne mari préparer purement située vérifier Jean-Luc gain métal surfaces L'objectif d'épargne douze expliquer lorsqu'on meubles yen chaussures créée institution l'accent solidarité Maastricht basée journal soin sourire Guerre bouteilles flexibilité maintient appartient moments rouges L'an basé devons installations Bacob association d'obligations format City Page disques modem mélange ordinaire vide chimique disent pharmaceutique d'assurances numérique porteur répartition blanche composants future parvient évoque Durant calme cru Electrabel culturel grosses baissé lois moteurs principes trente éventuelle Peu prévoir tours Pentium acheteur dimensions fonctionnaires organisé rencontré russe savoir-faire établissements Fédération Toujours créativité top application dépasser importe jaune l'application marqué mécanique socialistes tranche Quelles envisage traiter Surtout acheteurs chinois claire l'Institut vécu Objectif bail demandes diversification montré renseignements souscription Tokyo entendre tests Siemens filles unité Bekaert Dr UCB composition resté sinon agence fini modifications Cash industrielles obtient permanence restaurants réels échange florins l'accord terrains émergents atouts offrant LES bouche champ chaud l'annonce monte preneur présents quitte tarif facture fiscaux modeste processeur Fund avenue compétition relevé tenté Est-ce Musée W bijoux différentiel déclaré institutionnels l'employeur traité Intel traditionnels victoire connus correctement pub Dominique Tant accessible rencontrer stocks Art espérer jouent menée nécessite provenant utilisent affichent délais inférieure sent spécial Amérique acquérir album idéal l'écart véritables associé candidat connaissances l'énergie signes cheveux conserve stress d'Anvers d'action directeurs donnée endroit l'emprunt l'impact der traditionnelle Martin ciel convention obligataires prouver Espagne O Petit Source dessin humaine l'huile lait Seule Thierry boursiers continent destinées flamands néerlandaise pensions commencent considérable nationales nul s'adresse conjoint crédits militaire morceaux privatisation repose sommeil traditionnel PSC Seul capables combat finances puissant s'agissait Bill Renseignements physiques Richard allant créations toile évidence convaincu excellente or retraite théorie transformer Tour transaction visant Deutsche Mons attentes cycle détails Votre héros l'artiste l'université sérieusement uns Ceux considération impose propositions Autrement cap forts l'Afrique usines Afin Quels aisément ressemble risquent totalité imaginer originale intégré intéressantes l'extérieur loyers auxquels circuit indépendant intérieure jus maintien cotisation l'Asie moyennes quitter stable CVP Compaq galerie liens souffle GIB apprendre concert l'exception l'échelle liquide nez noire température transparence école champion diminué désir ressort voulons équipé alimentaire den organisations présidence raisonnable ratio recommande utilisant accepter accepté cache chocolat chuté comparer courts figurent passagers prison viande associés esprit froid jeudi liées revu satisfaction satisfaire test tiennent vraie contrairement dépassé extérieur qu'avec ami American Etat complémentaire déclarations réactions Fonds artiste conclure déduction remis L'indice déterminée fiscalité grand-chose humaines réponses équipes ITL Michael Systems aspect commercialisation manger RTBF engagé obligé proportion signature étranger imposé s'applique silence vote Afrique Mobistar cible contemporain fondateur Jean-Claude communiquer d'investir existent majeure ouvrir électroniques JPY TGV compétitivité erreurs notation rang Apple GB accident certificat exceptionnel http proprement riches Barco Quoi violence adapté bénéficient récession sentir armes arrivé crainte garanties l'automne ménage officiellement ouvriers Autant discussion rejoindre époux citoyens concernés d'inflation définir L'idée Paribas Telecom d'aller fabrique feront née oblige patients pensent responsabilités SP doublé fraude l'article organise Henri conclut désire l'appareil l'association l'installation législateur écrans choc gratuit mobile naturelle dialogue révision familial lourde poche décider négociation tort Maison Trésor constante cotation déterminé l'instar managers opté transformation Life anniversaire compétence géographique I mandat réservé établir Business fins richesse CAD commente intermédiaire l'univers retrouvé sciences Sun banquier former monté parfait veux René investit l'oeil n'aurait parvenir vieille Di collections dirige fonctionner mauvaises tapis venus Contrairement Suez piste pistes tensions campagnes investis proposés sac tabac bataille britanniques fine liégeois partenariat privées remplir supérieurs Beaux-Arts Christie's laser restauration Dutroux chimie rendent textile Brabant Colruyt James National Quatre préalable souvenir venue Communal avocat comparable consolidé critiques interdit l'initiative mine quotidienne rigueur réduite tissu Invest pain participants procédures profondeur retrouvent rues taxation Mexique asiatiques conducteur demandent environs fermeture gris rumeurs accueille amoureux d'augmenter défendre l'immeuble pure souffre créneau d'énergie journaux s'explique seuil Jeux Office auteur cash-flow fichier foi instruments quelles séance véritablement Yves attirer civil civile d'aujourd'hui eau l'épargne station courbe hectares influence ingénieurs tables vivent Exemple L'un blancs couche cuir devenus extraordinaire patient peux aient animaux associations d'utiliser foie initiative l'Amérique poursuite survie Face K apparemment consultant expansion l'exposition séjour champagne commentaires complexes cylindres décennie rendements retenu sais sujets cuivre offert réagir sec varie Fondation artistique communications monétaires métaux permanente positifs électriques Ph basse concentration investisseur provoqué doux stations coin modifié avocats estimations original souplesse Attention Frank Hainaut Suite annuels cellule clause exemplaires malheureusement minute normale Frédéric NT Sud-Est atout latine logements pilotes susceptibles Roger XVIIIe ordres remarquer actuelles bouteille constat opportunités prépare vendeurs accrue fruit g jugé l'amélioration loisirs pur trentaine bus gendarmerie air alimentaires coté modernes préciser réussir laissent parfaite spécialement évoluer Dewaay Désormais Groupe maladies négligeable tension Lion chansons dite festival négative préféré restant Cera adopté coopération distingue douceur retirer technologiques Editions Parfois bruit comptant démocratie exception mercredi offres sucre vedette évolue British Leurs compromis hauts élevées émission Faire attendue d'appel jusqu'ici lourds quels soirée événement alternative chimiques conférence quitté serveurs Brésil CD-ROM correspondant l'avis locataire matériau périodes utilisées ai d'emblée l'aspect morale équilibre Sony fixer gratuitement trait Trop adultes consacrer d'importance normalement parole prochainement suscite verra clé mesurer notes potentiels relatives Flamands Francfort L'homme Palais Plan République l'armée transports Portugal couvert joueurs Malheureusement coupe dispositions effort endroits aides contribution insiste s'inscrit souhaitent communal impact progresser Sambre US administrateurs d'ordre deviendra dégager formations l'ouvrage souscrire cellules facilité gras militaires passés quinzaine souvient Se automobiles bref confortable essentielle officiel vive vols Marcel Top combinaison distinction définitive japonaise liaison tissus cadeau canadien distribué existants ordinaires servi surveillance l'architecture l'aéroport médecine n'aura n'étaient revoir récentes voies L'obligation Rappelons comptabilité fabriquer fasse intéressants peintures quartiers valable étapes bénéficié couvre diminue envers introduire missions s'attendre Petrofina apparition coffre digne fibres initiatives littérature rembourser retrait Bundesbank D'ailleurs Ma Pascal Pologne consacre employeur favorables l'approche manquent assurée battre chantier conclusions consulter craindre d'utilisation vivant Chacun internes apprend liégeoise observe provenance sortes Marie cessé céder estimée marchandises Poste balance copie cuisson négocier spéciaux traite Bruges hollandais peut-on porteurs régler soutenue suivie Stanley accueillir médical notoriété provoquer sensibilité su vocation L'investisseur for impression l'ampleur séduit conflits imposable journalistes manifeste provoque wallons éditeurs EUR canal fondamentale futurs graves mené mur pommes racheté remonte solides suffisante chargée chers discussions garantit indicateurs provient soutenu sportif systématiquement zéro comptent recette récit subir évolué Johan accorde faciliter hausses Macintosh Services d'imposition débuts garantir portefeuilles susceptible universités Glaverbel Sotheby's actes brasserie caractéristique cherchent cp favoriser justement prudent stock échelle énormément Standard compose couronne exceptionnelle flux j'étais justifier réfugiés t téléphoniques Monsieur Ville accepte inspiré l'ombre pollution situent allemandes boissons douce gouvernements intervention motifs primaire World entrepreneurs l'efficacité représentation Thomas apparaissent complémentaires cycliques franchement instrument rayon Food Roi conversion partager retenue simplicité Comité confirmé devaient expériences front jeter logistique reconnu Affaires Heureusement comédie historiques imposer l'actionnaire obligatoire recourir références traces témoigne GBL Java Vu acte appliquer catastrophe conduire contribué fais intervenir mettant pilote plafond remplacement tire Berlin Vincent portable profonde refusé repos béton fermé juges parlementaires prévention Donc d'électricité dispositif forment neige suffisant Louvain TV diffusion fédération lentement prenant souris tu contenter douleur intervient j'avais look manoeuvre parquet poussé arguments billets consacrée dirigeant décoration holdings justifie levier majeur midi recyclage robe Entre-temps appels directive initial intéressés pousser pouvaient secrets surpris univers d'avis poisson spécialisées séduire verser d'investissements générations nettoyage ouverts réductions vélo Anne Compagnie Souvent d'Amsterdam explique-t-il l'abri l'intégration officielle résolution Service courses l'exploitation pari pousse revendre trace abonnés craint croissant juger régionale symbole touristes Rome actives communautaire contraintes journaliste traditionnelles variable amour atelier budgets budgétaires clef d'ores détriment nationaux paquet relatif Francis Rupo d'enfants diesel gare l'acquisition parlent rapporte regarder éventuel Clabecq carrés psychologique rupture téléphonie Air Danemark Sauf citoyen four permettrait puissent rapides Marketing Tendances dit-il développements enregistre envoyé intermédiaires l'issue liquidité réagi Allemands L'autre Louise connues consolidation créateur idéale l'espoir profité prévus résulte similaire Boeing Didier Dieu MB Willy agir coins constaté d'eux danse occidentale optimistes pensée professionnelles Computer San Tournai appliquée chanson déroule franchir liquidation morts nouveauté prestigieux suppression Laurent Mercedes existantes pleinement simultanément établissement cercle corruption discipline familiales l'avant laboratoire livrer montée participe Personne adresse finance génie leasing versement bits concernées dents inclus maximale précédemment routes variations équipements Declerck chemins constituée d'effectuer globalement libres proposant souligner Bon ambitions croissante décennies fou l'influence littéralement motivation rubrique souvenirs surprises vendue Celles-ci bébé plainte stockage écrire énergie Spector annonceurs d'olive débats ferait grain sont-ils séparation tournant vendues Compte Cools Volvo accessoires constitution consultants dommages occupé s'appelle échanges Seconde adresses efficacité fixée frappe l'apparition monopole panneaux restée sentiments terminé utiles Bruno Seuls appliqué donnant fondamentaux fréquemment l'aventure métiers planche royale suppose Inc Moins fourni japonaises mm payés profond programmation résolument L'Europe d'amour d'ouvrir golf poudre proposées étoiles PRL attaché concevoir dommage l'opinion main-d'oeuvre récents stratégiques vitesses Peugeot Philip apprécié connexion hommage jardins remonter supplément Canal Tessenderlo cheval entretien inutile l'Espagne laissant mécanisme nouveautés placés repli régionales régionaux souple symbolique troubles évaluer Aucun Mac Régions cession confie moyennant numéros portrait établie cinquantaine d'assurer peuple promis retenir réception sexe utilisation visiblement X acteur créateurs dites déposer expositions handicap lourdes plastiques procure proviennent sous-jacente Ni Quick Virgin auxquelles banquiers baptisé finit venait volant Fiat Joseph Lyonnais enseignants geste l'UCL sérieuse Mignon Royaume-Uni Vers classes doigts encadré froide niche prévision servent Baudouin Nicolas Smeets arrivée domestique envisager espaces filet inflation posé promouvoir roues Assurances Capital immense incontestablement lot pharmacie restructurations sportive L'ensemble ci-dessus d'activités engagements humains introduction organisée Delvaux assiste couverts franchise L'histoire annuellement arrivent causes pierres valent volet Hanart Karel Lotus intention l'acheteur manifestement prendra profondément relance suivantes suspension commissions divisions développée employé fourchette qu'est s'occupe vendent Clinton Jean-Marie Maurice Nationale compenser d'octobre essayer fondé formidable graphiques professeurs tester George Histoire boutique caméra d'avance fondée heureusement label montagne pensons plate-forme temporaire tombé tribunaux évite BMW Monde PB condamné culturelle d'air entre-temps entrées installer perception sauver thé Fermé Peut-on Unilever accompagné externe franchi jadis manifestation miracle moral refus réunit révéler s'installe Etienne Evidemment bateau conseillé d'écart décrit fréquence l'occurrence s'adresser taxes Company concentrer consultation dorénavant dynamisme installée profite réunions amateur avoirs calculé d'atteindre estimation exerce bloc circuits couper courante d'améliorer d'instruction effectués fameuse intéressé montage prévues subsides séduction traités trouvera équipés Aucune ingénieur réclame rémunérations tentent tournent égale émetteurs Prenons agent attentif d'aide d'oeil existant fluctuations gré l'administrateur médicament partiel permanent s'installer situés sportifs vertu Intranet L'évolution Quelque allons appartements duquel kilos sicav toit versées chaussée d'huile futures individuelle manifestations raisonnement sports Christophe DES absolue appelée contente d'idées d'investisseurs intense money répondent tranches Waterloo assurent calculer choisit citer doté fixes inférieurs mensuel promoteurs relais sorti télé voisin Corée Lynch dit-on hiver l'Association l'ULB naturelles preuves présentés souffert Qu'est-ce attendent camions camp contenant curieux détente effectue géants l'endroit l'intermédiaire légale n'étant prestation publiés rente réalisent ski soigneusement vif Cie conviction doubler morceau racines tenant universitaires visiter Center Global démarrage entamé fondamental l'intervention magique procurer records universitaire vrais L'une ateliers avion confronté contribuables doigt drame féminin habitudes l'immédiat lutter pétrolier supérieures vois AEX Bell afficher confirmer conservé d'offrir détour fusions l'avons l'équilibre lever malades ouvrages paradis prouve prévoient remplacé spéculation Rwanda concernent départements dérivés identiques marquée n'avaient prince produisent résidence voulez L'opération Turquie allocations démontrer enregistrée individuelles oublié parking proposée Commerce Guide Tom comprenant débuté engagement fit légal participé passées présentant présentes quantités échapper Maystadt Software acquisitions affirment alentours assureur autonomie canaux inverse l'adresse l'automobile modes signaler signée Goldman Notons cancer carnet convergence foule indispensables intégrée nucléaire opérateur paiements palette pence priori promesses tentative Belgian Corporation Dutch Tel aérienne boutiques craignent débiteur entités ouverture procureur puisqu'elle sommets supporter traitements voyageurs Bureau anglaise argument d'établir imaginé l'appui mécanismes personnelles privilégié satisfait science terrasse tiré trésorerie télécoms D'ici chaude coupé esthétique inscrit poissons refuser s'effectue tennis Moi Unix appartement clavier démontre organismes pressions regroupe secours sous-traitance théorique accessibles courants d'été judiciaires l'innovation l'opérateur précédentes réaliste aventure d'Internet effectifs gains l'opposition l'unité musées rock Coupe Netscape bain déposé espoirs majoritaire semblait Digital accorder attire d'échange feuille initiale installation krach malade opérationnel pauvres pont préserver publier rechercher recrutement représenter révélé sanctions traditionnellement vapeur Cobepa Salon confier considérés cultures hypothécaire illustre introduite l'échec menus multinationales paient pareil problématique quarantaine rentrée soutient terminée voudrait carré exemplaire lorsqu'ils nulle posent pratiquer sida versements visites étions étrange CBR berline cash distinguer durs défend efficaces essence exclu jolie photographe propriétés veau DU Journal Nobel Vieux atteinte chapitre concertation dégage extérieurs médicale pareille patience recueillis substance transforme voile échec Léopold enthousiasme fédérale gloire préparations transmettre visiteur éd Ajouter Brederode Européens Jean-Louis Tony apporté d'importantes l'acier libéralisation observateurs panique présentée réserver signer tendre to touristique Récemment brillant conventions décret généreux industries joie stars égal Sachs continué dessert espagnol est-ce légende passera rapprochement salariale scolaire Monétaire assurément contraint coton curiosité entité entré l'architecte libéraux logo parlementaire parviennent portables provisoirement routier réservée tourné veiller FN Hoogovens XVIIe arbres communs employeurs exercices faisons l'alimentation magazines maintenu roses répondu spécialité Citibank Moscou Times accidents adapter amené avoue collectif d'évaluation dessus indépendante l'institution l'établissement peintres rappel réalisations s'avérer architectes comprise essentielles examen fidélité héritiers l'actualité préférable relancer s'adapter s'engage sable semestriels significative suisses Grande Nouveau cadeaux comportements constamment contribuer d'images offerts périphérie varient Michelin caisses conscient cédé effectuées faisaient personnalités s'engager syndicat Arbed OPA abandonné cents destin drogue fines identité invités l'événement modalités négatifs paru répertoire s'intéresse Disney Isabelle Japonais Roland William annoncée champignons défis générer russes situer supprimer élu Jean-Paul Spa accordé acquise courtier d'attente foulée noirs résister section signaux sombre susciter compartiments correspondance créances discret dépassent florin formé frappé papiers représentait saurait versé absence d'Or d'acquérir d'avenir degrés envoyer joli occupent on-line percée priorités processeurs restés résume soie travaillant économistes Etant affirmer ambitieux cerveau consensus coordination d'options l'appel magistrats qualifié rangs tournée Alcatel Toyota anonyme c cassation cf confusion discrétion fondamentalement initialement installés l'assemblée l'entretien l'émetteur maman nuances paraissent parfums saine vedettes DM Nikkei dirigée duo enseigne indiqué kg lourdement module prononcer réalisateur réformes star équivalent Danone Site adopter commis couches explication joint-venture malaise pantalon pomme reine sacs saumon soeur toiles échéant Agusta bond courir expert glace l'enseigne multiplier pluie salons teint European Finalement Maintenant adaptée diriger gérant répartis saveurs souscrit substances vieilles vraisemblablement élaboré émettre certitude champions cotés cyclique détenteurs explications fonctionnent générales invite l'expression pauvre successeur zinc Big Claes Six brochure cave codes configuration d'enregistrement fragile féminine issus magnifique maintenance manuel qu'a recommandé spectaculaires subit traduction évidente Conséquence Fabrimétal KBC adaptés chronique d'IBM enregistrés fibre jazz jusque louer médiatique peser rentables réussit s'élevait saisir semble-t-il visible Financial Singapour absolu blanches boulevard commissaire comprennent créent faculté histoires individus issue multiplient prétexte quotidiens réfléchir satellites souffrent standards Washington commercialise directs diversité gratuite l'Office logiquement ouvertes renoncer calculs compléter couples d'entrer d'esprit d'importants l'acte organiser payant paysages récupération slogan Electric PVC administratives arts avancé carrément changes crédibilité déplacement l'avance parvenu relatifs revues veste Celle FGTB Moody's assurés créés d'éléments immédiat jambes litre mousse prestige sentent souhait touché élus Belle Telinfo abrite considérables d'urgence disait faillites oeil religieux rédaction séries terres vice-président MHz System XXe cure dirigé don enregistrer juridiques pouce précises prétend réunis salade trouvait évaluation Cinq Fort confié cuire indicateur l'avait origines parlé remet spéciales terrible témoignent étonnante Buffett Catherine Research SAP Véronique achetée généraux imposée l'organisme l'édition mention merveille opposition réorganisation satellite scanner Milan Notamment a-t-elle acier ch conteste créanciers d'acier intégrés l'habitude multiplication panier pharmaceutiques quelconque rayons spectateurs transformé troupes Madame Tandis effectuée fromage géré interlocuteur législatives motif métalliques placée réclamation schéma surplus transition trio Coca-Cola Motors Proximus Wallons atteignent bleus chair conforme costume d'accueil intentions l'horizon l'électricité manqué sortent subsiste supermarchés D'Ieteren Européenne Lorsqu'on amélioré avantageux d'applications engagée espoir exceptions fausse l'expansion l'équivalent plage plaide poivre CHF Livres cadastral chips comptait craintes d'ordinateurs durable démocratique exceptionnels factures fonctionnaire fondation indépendance inventé issu maturité mobilité musiciens organisme recommandations spéculatif suscité titulaire traverse évolutions BD Fed calendrier collective disposant dévaluation l'honneur pauvreté poursuivi qualifier savait suédois termine traduire valait CSC Forges Hugo Max VVPR appartiennent confrontés demeurent divorce dramatique déductibles efficacement existence fermeté imagine intégrer larges locataires orienté pensé variété administrations aériennes complexité entrent exercer photographie sauvage terminer venant Corp amortissements champs déplacer désigné déterminant opportunité piano remontée s'agisse étroite AT Difficile Dix Recticel bar concerné constructions l'identité merveilleux min moindres réunir survivre ultime étudié Lambert RC caractérise choisie distribuer décidément limités livré luxembourgeoise modules progresse promet redresser tombée bains d'hommes dessine enfance finition jury mythe optimale pair plateau poussée resteront Zaventem assurance-vie composée d'entretien décident hélas instant jet laine mobiles parcs préoccupations ramener représenté soudain éditeur José L'auteur Morris Nasdaq administrative autorise banking humour jouit l'actuel market n'ait organisateurs peint s'annonce s'assurer sculptures superbes équipée ASBL CMB Gates bronze catholique citron contributions couture disquette démarrer excellence fatigue imprimantes industrie l'aménagement l'effort l'encontre laboratoires menées meuble mondiaux réduits sont-elles sous-traitants talents Christine Henry administratif administration ailes aérien carrosserie d'économie découvertes exclure hautes hiérarchie impressionnant massivement métro possession remporté strictement suédoise utilisateur vais émises étage d'arbitrage devez expliquent file hebdomadaire intéresse l'hiver l'élaboration marbre performant personnels prévenir suivants verte viendra Angleterre Association Hongrie L'affaire Louvain-la-Neuve OS apportent automne bourgmestre branches carton contraste courage d'analyse datant dépendra feux importations plantations sidérurgie signale FMI Jean-Michel Léon Super UN Venise adaptation allure attachés exploite folie instance naturels olympique populaires reprenant valorisation villa villages Est-il Renaissance Shell Vienne architecture authentique autonome complicité d'au d'ouverture dépendance dépense fiable invention lancés partagent rencontres renouvellement évoluent Akzo Combien Marché Xavier ampleur analyses bandes canard collectionneurs compliqué culturelles d'avril donnera déplacements fermer jugée l'aise médaille notaire peut-il privilégier prototype regain regarde wallonnes Emile Volkswagen accru caoutchouc cinquante communautaires conjoncturel créant durer délicat exigent précédents renforce s'ouvre évalué Lille débute définitif engagés exploiter fur positives réparation soupe transferts Ostende Propos Victor limitées nourriture offertes ramené reculé remédier similaires triste écarts Data Industries abaissé boire break chien consacrés cours-bénéfice fuite gigantesque imprimante l'Ouest l'emballage l'église remplace salariaux spectacles vache velours étudie ABN Auparavant Cité Continent Guido Meuse Mo Question d'exemple dotée défini définit délicate démission extérieure interventions jouant l'engagement n'ayant noires obligés Bruxellois Mark Motorola accéder affichait chemise espagnole fleur gardé habitation huile l'accueil légales multiplié revers architecte assister axes concerts contemporains discuter dose détiennent folle l'éditeur magie pompe provisions rapidité témoignages Cap Festival Finlande NDLR contribue demandeurs démonstration exact numériques participent poignée puissants spécialités G-Banque III Livre Peeters SICAFI Technology applique copies flacon lunettes mixte nullement plante provisoire publie puissante regrette s'ajoute stratégies typique vocale Anhyp Brothers brokers concentre diagnostic faciles gestes guise hardware opérer orientée passionné refusent scénarios suffisent vagues écart Chrysler Sénat Via ambiance appartenant assisté attrayant bagages blocs d'essai d'histoire d'étude déduire forfait manquer restait surprenant sérénité vertus écouter DKK Dirk Gevaert HP Santé Wim accueilli affichés affronter appeler coloris composent contiennent contrepartie fondamentales impressionnante largeur peaux proportions reconversion revente significatif écrite énormes J'aime Network aiment cherché chinoise décharge député essais indiquent infrastructures jouets musicale mutation obstacle partant perdent étudiant J'avais Sinon accordée adjoint débarrasser débit dégustation déjeuner glisse individu l'éducation l'électronique organisées produite prétendre quotidiennement s'étend secondaires soucieux sous-évaluation verts écologique émet Hollywood Legrand Lorsqu'il Pro améliorée bat e-mail excessive favorise joueur l'OCDE marks office phrase promenade prometteur stimuler séances tiendra valoir Martine Québec acquisition augmentent baisses distribue dus massif médiocre obtenus rentrer sales semblable transmis Julie Place ZAR bouquet ceinture coalition comptables corporate d'actifs d'attendre différemment dits italiens journées l'assurance-vie linguistique marchands n'avoir opinion originales registre requis synergies tunnel vogue Malaisie charbon emballages esprits examiner fléchi l'outil librement mentalité miroir occidentaux parité progressive sensation sonore supports synonyme vinaigre Début Euro Hollandais alliance barres chargés d'habitants dois fier gouverneur l'atelier l'humour n'avez origine payée pétroliers signalé variation Né Point XVIe aliments caméras comportant consultance contemporaine déclin effectif invité j'en l'actif licenciement match millénaire salarié studio tenus triple équipement étoile Bob Californie Devant Smet abonnement baptisée commerces creux facilite flamandes jurisprudence l'ai l'attitude noyau portraits prononcé publications puce qu'aujourd'hui sinistre terminal Dexia Mes augmentations batterie cinéaste compare guides inconvénients instances l'avion retourner sympathique évaluée L'Etat achetant bailleur bonus colonne compensation conseillers continu courbes déclarer enregistrées généré innovations ira jusqu'aux lente occuper pesé pot quarts épreuve Bois Congo Courtrai Powerfin admet attribuer championnat cités comble conquérir d'encre d'oeuvres d'office devenues excessif incertitudes intitulé l'évaluation périphériques réclamer réelles s'étaient Ecolo Nivelles Qu'il Travail allures camps dues exclus grandeur homard illustré inévitable inévitablement l'équipement mariés modération ont-ils positivement profits quarante sculpture spots stage universelle vainqueur édité étendue Arts Communications Media Novell Poor's Stéphane Word changent communiqué conversation d'artistes effective interlocuteurs l'Administration l'ambiance n'aime patronales permettront pneus qualifiés religion souffrir évoqué Chirac Chris Forest Herman Hubert Opel Parti SEK Terre Vie alternatives anversoise bateaux battu brillante d'introduire désert entrepreneur essayé interface intégralement j'aime lu modifie personnellement systématique Arthur Park admis blocage calls développent individuel l'ONU l'appréciation modestes multinationale out parlant porcelaine pénétrer respecte soupapes spéculateurs étudier Nestlé abus combler conservation donation fiabilité l'exclusion m'ont parcourir parisien remarquables retournement returns EASDAQ Kodak PDG collecte d'alcool déception détérioration l'avoir l'échange lorsqu'elle palme phases privatisations répéter s'imposer valu voulais Almanij Infos Procter Smith Tubize actuariel australien croient d'intervention d'objets encourager fiscalement hautement l'assiette marchand néerlandaises plaintes reproche retient sillage soldats témoins urbain FEB L'économie adopte boutons chuter conjoints convaincus coopérative correspondent director n'hésite niches savez stables tend vain CV Gamble L'art Quinze Servais Seules apport chauffage commercialiser d'attirer d'existence d'organisation dangers foyer ingrédients négocie révolutionnaire score sidérurgique techniciens voyageur Brown Corluy Herstal Horta L'avenir attiré com conférences constatation d'Amérique douzaine duration détenir indemnités lion nuits plomb soumise sportives verres attribué corriger d'hiver domestiques faille foot home indemnité romantique simulation Brussels L'avantage Swissair autrefois choisis communales d'Angleterre dessinée disponibilité détenu engager exceptionnelles figurer habitant hollandaise immédiate intégration média électeurs Amro DOS Moniteur Parc acceptable apprécier centre-ville d'elle envisagé fantaisie habituellement posséder pourrez tentatives touches visibilité Creyf's Heineken Régie Sterk Tchéquie analyser autorisé complets contrainte costumes d'agir doucement démarré eut posée raffinement rond sidérurgiste ABB Ensemble L'offre Me accroissement ajouté assiette autoroutes batteries d'Asie dame disciplines décrocher essai essaie fréquent génétique inconnu l'avocat majeurs multimédias plume probabilité préavis publiée scandale spot sérieuses tomates égales Coup Die L'investissement animé bleue d'utilisateurs danoise essentiels fondateurs fonde l'Atlantique l'épreuve maquillage mexicaine oeufs opérationnelle prestigieuse renforcé rumeur soigner témoin Blok Golf Nouvelle Prudential Tonneau Wavre affichée attendus ballon bouton chanteur chiens d'écrire entrepris exprimé nomination perfection photographies renommée sous-évaluée universel vives BT Eaux Jacobs Raymond axée cacher défauts l'aube l'octroi méritent occidentales planning rage testé Barbara Britanniques Interbrew Technologies Visa acquiert adulte affichant agricole annonces anversois atteignait cabinets centenaire confection culturels d'aucuns destinations doutes développant ha l'ASBL l'autorisation l'émotion masque méfiance officiels outre-Atlantique panne perdue pouces protégé rires sacré silhouette soeurs virtuelle vues écrits épreuves Impossible Madrid appelés candidature chargement documentation dominante députés indications l'indépendance leaders listes mince opte énergétique étendu Ci-dessus L'exercice University aisé concepts d'achats d'agences d'alarme disquettes domine développés envoie exercé existante fauteuil habitations italiennes modifiée nets puces réclament tomate tons CERA Campo Val aluminium assumer confortables d'ajouter dates démarre exotiques expose hall l'aluminium l'enregistrement licences navigation opter rapprocher émotions Bertrand CPAS CompuServe Jamais Jo Klein Swiss acquéreur courtiers doublement défaire l'Ecole libération lin percevoir perdus plonger poésie process s'accompagne saisi signification songe séparément tentation trou variables Collignon Los accusé affecté apparu complément créatif exposé financé incite investissent limitation montagnes onze originaux ouvrier partagé professions préalablement tonne trajet visent L'industrie Magritte Power St balle chercheur communale compression crises d'articles démontré détention détermination endettement gel inchangé incontournable l'enfance l'once l'écriture lent modernisation organes promotions présentées relief remboursé rencontrent sage Monnaie accuse axe distances dépréciation détenteur fournissent gendarmes horaires imposables intercommunales lancent multitude particularité partisans provinces quelques-uns reviennent s'améliorer vernis volontaire ambition baux d'apprendre directives dis délégation détecter détermine exprimer individuels l'unanimité localisation miel optiques passif performants piles politiciens poussent privilégie restreint souligné supporte vallée ventre éthique Anglais Assubel Frans L'utilisateur Saint Supposons VLD activement analogue bassin boulot chapeau claires connaissait consortium culte d'administrateur dégradation hypothécaires l'exécution l'incertitude lumineux maux perles porte-parole privilégiée privilégiés qualifiée réagit résumé Australie Axa Etre Fernand Jules L'activité Lui apparence ci-contre comédiens connecter continuera convertibles correcte dessiné durées enjeux incapable libellées millier populations épargne évoquent CLT Mobile capot charger communiste comparables congé correct d'inventaire gagnant intérimaire l'UEM l'autorité l'envie libéral liquides orientale passait policiers redoutable solidité traitées Bond Mme SME affiches attente basés comparé consommer d'armes inconvénient jette maigre masculin négocié profitent vaches vitrine Avis Finance Hotel Index administratifs allaient avancée compétitions confiée contenir d'Art d'opérations description dormir exclusif gouvernementale joliment l'Intérieur mailing modérée pénal raisins rempli royaume sanction spéculative terminaux Chanel Grand-Duché Leo accélération analyste bourse coupable d'expérience d'honneur fabriqués mettra morte paye prudents récolte réduites s'intéresser saisons sexuelle sondage strict tenues tranquille agit briques concernée d'envoyer d'occupation débiteurs illustrations paroles passager payées piscine plages rapporter Gillette S'ils banlieue commander commentaire composer d'appareils distribués détenus fabuleux génocide hésité indication indiquer industrialisés l'imagination l'individu l'évidence minimale musical nerveux plaisirs pop positionner rassurer réalités réservés sons séminaires trésors uniforme vis Blue Boston Ch Gold Lisbonne Nul SNCI VW affiliés appréciation avancées cafés casser chat compatible d'Afrique d'actualité franchisés l'apport lots moules mécaniques papa préparé qu'auparavant souhaité traits éventuels Cannes Chicago Chinois Lee cou d'espace d'expansion d'offres d'évaluer discrimination dépassant expliqué externes fédérations metteur mobiliers paire peseta polices productions préoccupation rappellent rentrées réparties spécialisation statuts traditions truffe éliminer étroit Hélas Napoléon Onkelinx audio av baroque brique carburant conducteurs docteur délocalisation désirent e estimons flotte harmonie l'écrivain livrent marquer obstacles rapporté s'ajoutent sobre tandem timing travaillons électorale établis Avermaete Baudoux Caisse Elisabeth Picasso Proton abandonner assiettes axé civilisation compréhension confirmation crime d'énormes diversifier dresse extension fantastique ignore incendie levé minoritaires négliger pacte panneau pratiquent raisonnables retenus retombées revenue sponsoring étages Bayer Contre Inutile McDonald's Nike Pr aborde adoptée bouger cassettes certification exigeant frein fréquente imposées l'infrastructure manipulation optimisme pourvu profondes rassemble retiré shopping stabilisation vertes volontairement établit Dior accompagnée admettre aurez automatiques concret constant d'organiser drogues fourneaux influencer interprétation intime magistrat occupée prouvé recommander sélectionner séparer tube voyager écrivain équivaut étroitement évoquer AUD Age Design Oracle Petite accueil approuvé boom construite continuité cotait dresser décors gravité l'Eglise légers menaces mondialisation passionnés s'exprimer stricte styles superficie tas terroir versée Dernier Total applicable avancer boisson camion commercialisé composantes concrétiser conservateur dames diable diffuser fixés formulaire freiner l'enthousiasme l'élément mourir oublie placées péril raffinage rapproche remarqué rendue résiste réunies sponsors transférer verse Budget Denis Hoechst Hotels Pfizer RNIS Walter averti conseillons disposé défunt failli grammes libérer nickel popularité pratiqués rassembler regards requiert spécifiquement successives théoriquement timide volontaires Barcelone Dell Ligue Mettre Simon TEXTE Zurich associée ci-dessous connaissons d'apporter douter fabriqué figures finesse innovation jeté justesse l'endettement mémoires neuve pile plaque promesse pénétration rouler répondant s'agira sachant situait Chili Florence Information Qu'en acceptent accélérer adaptées adeptes adolescents attendait d'émettre foire habitués incontestable interview l'attente l'indique ndlr noix oiseaux permettait qu'aucun qualification rachats rendant réputé syndicale tombent touristiques valoriser voler écu Alexandre Dupont Environ atteints clarté compact concurrentiel décroché enseignement herbes intelligent licenciements négatives rédigé répercussions salariales tempérament tutelle varier verdure Cologne PNB SOMMAIRE aisée bijou bénéficiant combattre d'humour donnait exacte exposés expression fonctionnant gérés impérativement indépendantes l'opportunité levée lorsqu'un non-ferreux nostalgie nourrir pratiqué richesses robot saisie Andersen King aborder assortie brutalement brute disparaissent engendre heureuse injection jaunes l'intelligence montent nuance officielles physiquement prudente refaire segments supposer synthétique vieillissement échéances Autres Bonne Dupuis Elio J'étais TENDANCES cassette colonnes d'impression dépression fouet judicieux l'actuelle l'entrepreneur lac portait riz sauvages secrétariat situées solaire soucis souscripteur séparés transparent truc typiquement Blanc Café Généralement KLM United améliore annoncer assemblée cahier chanter compétitif concession connais crédible d'accéder d'équipement dangereuse destruction envisagée glisser grimpe infrastructure insuffisant isolé minorité passionnant possédait recommandée régimes s'interroger s'offrir syndical trouble Angeles Barings Défense Equity L'agence Merrill Mouscron Spitaels Xerox abouti adéquate archives attribue boeuf directes directions filets fleuve indéniable interrogées l'alcool observer prescription revendications rude successifs tri trimestriels télécommunication Communication Eddy Hasselt L'expérience aboutir anticipé arrivés cohérence collaborateur compositeur cravate d'excellents d'outils dons indirectement interviennent l'Histoire l'estimation multiplie qualifie retenues réalisme suffisait variétés échappe Antoine Communautés Hauspie Larry Petercam Seulement Sofina accessoire aimé bébés canadienne cuisinier d'imposer détenue existait explosion flexible licencié livraisons malheur militants minime notions opposé organisés particules ratios reprennent semblables tournage trous Holding IP L'accord Las Pékin artistiques avancés cosmétiques fournis héritage implantation l'adoption originaire partielle passions proposera recherché renforcement sexualité suites téléphones témoignage vignes vitamines Code Général Inde Johnson Mobutu Multimédia Méditerranée Notes Vendredi amoureuse brevet consomme cristal créées d'image descendre décline entame faim freins inspire l'explosion maritime menacé pervers poursuivent savons sols sorties soumettre strictes venues Chantal Exchange Galerie Hans Maroc Nathalie Nombre PJ arme bombe bouge chantiers chic extraits gants informer insuffisante l'unique liaisons limitent nourrit précautions rencontrés renforcée résolu s'ajouter s'occuper surveiller trimestres échappé éclairage élargir Bosnie Lyon Nicole Primo Tintin accompli comportent considérées croyait di définie enseignes estimer exiger fiches forcé forfaitaire gourmand identifier joint l'extension massive millésime minoritaire plaques restants s'imposent stabiliser virage vraies éventail Belcofi Vlaams audacieux aventures banal communautés douche détection exprime honoraires jugés l'avenue littéraire marginal montres peloton procédés protocole rendus renoncé subissent suggestions sépare turbo voulaient Faute Stock achetées agricoles circulent confirment coucher d'aluminium détenues extérieures finement fondre fous horaire imposés inciter l'adaptation l'employé mondiales médicaux occidental occupait offerte orientés prévaut pureté reposer tendresse élégance ISO NC Sport XEU alliances amont annoncent appliquées appréciable appréciée artisans assis brasseur clairs cubes d'afficher d'auteur d'avion divisé débourser décevants emprunte fermement générosité horizon l'Emploi l'accroissement l'envoi l'examen originalité parent plongée scission sondages soumises surprenante triomphe vides virtuel émise Botanique Busquin Consulting Jean-Marc L'exemple RAM Vietnam Young achetés africains apprécie attaque bruits cabine clichés criminalité densité exclusive extrait facilités fixation gastronomie inconnue investie l'agent l'humanité maintenue mythique piliers psychologie raconter récompense résidentiel saint signés situant songer thérapie touchent tromper échappent équivalente America Avenue Dont Explorer Jeune Lux Malines Vos artificielle assistée branché brutale clos complice compétent emprunté enthousiaste entourage fierté formats genres loue marié mentalités ministre-président peines poupe prolonger pénale queue ressemblent rotation savoureux sensations tuer Faites Federal Hewlett-Packard Investment Jack Johnny Lernout Retour Réserve boule chaise disposons délit démarches entouré informé l'élégance loué majoré n'hésitent pessimisme planification pompes puts syndicales triangle vitres épargnants First Mozart Real Rotterdam albums amener appellent baron brevets carbone carnets combine consolider cycles d'accepter d'épuration diamant douloureux dépendent développées frigo l'Hexagone masculine modernité nucléaires ouvrant pavillon recevra restrictions revirement rétrospective solitaire spontanément stages tubes Ackermans Ben Entreprises Institute L'argent Warner calculée chasseurs circonstance cite commandé concurrencer conditionnement d'escompte d'ordinateur disposait exceptionnellement favorablement fiables frapper fédéraux grossesse généralisée inquiétant l'UE l'anglais m'en n'avais précieuse précieuses prévoyons rejet résiduelle réuni seconds solitude trésor épais BASF Européen Roumanie Sept Telenet ad approfondie catalogues center circulaire colle composés concentré concepteurs contribuent d'architecture décidée délicieux excellentes inspirée intervenants joindre médicales plaindre plongé prévisible qu'aucune romans répétition stagnation stand suivies ticket vanille économiste élégant Airlines Culture Exposition Indonésie L'occasion Lunch Net Néerlandais South Sécurité Trends-Tendances accumuler ajoutant armée assorti bénéfique cigarettes conte d'économies désireux fiction finir fixées handicapés investies l'écoute manoeuvres nationalité onéreux paquets ponts prenne rattraper recouvre reflet reporter rwandais serait-il texture traverser visibles élargi établies Front Irlande Moyen Style Verviers bords composant conjoncturelle couteau credo d'installer d'édition descente désirs gagnent galeries imprimés intellectuel job l'appellation l'intéressé ludique parisienne prédilection publiées rebond reconstruction éventuelles Bonn Cofinimmo Force Line Midi améliorations angle brochures chaleureux conviennent d'André détruire examine exonération familiaux l'Américain laver linge légendaire matériels mensuelle n'est-il noblesse prévenu refroidissement retrouvera réguliers saut saveur surprendre tir versés DSM Erik L'administration Loin Lyonnaise Pire Vlaamse chante chemises confirmée connexions d'identité déroulera fausses grille habite implantée imposant influencé intéresser l'autonomie mondes moniteur métallique n'arrive neufs pondération prédécesseur repreneur s'efforce sera-t-il sous-évalué trompe va-t-il vendant vidéos voudrais étiquettes évalue Franki Geert Liégeois Mitterrand PLC adéquat autorité concessions convivialité cordes courtes d'avantages d'étudiants désigner essor exigence exploitation exportateurs habituel lancées livrés mets mineurs parlait parlement pause primordial publicités recherchent émotion Casterman Deceuninck Découvertes ESP GM School Shanghai West accompagner assemblées championnats classé col couvrent d'antan d'envergure dictionnaire exigé formés gérée jeans juifs justifié l'abandon l'attribution lenteur manifesté oreilles prononcée reconnaissent reconnue reproduction seize serait-ce soixantaine sortira spectateur vice-Premier vingt-quatre voyez élégante AU Dyck Hollande Laurette Manager Partners Rover Tu Warren affirmé allé capteurs chant clinique corde d'annoncer douces dés excellents exercée faiblesses incapables moeurs nation occupés pesant prolonge proposons prospérité présentait reprocher réglé s'adressent sauvegarde sauvetage vitamine Douglas EOE L'étude Nouvelles Porsche Produit Transports Winterthur bruxelloises calcule causé chauffeur concrets conscients conservée conversations crevettes d'Albert découpe déterminées envisagent fermes fermés imposition infrarouge interactif l'ambition l'interdiction l'obtention langoustines oreille pencher pessimiste pessimistes pilotage policier porc prétendent quotité remous représentaient référendum répartir répression semblerait souffrance substantielle voisine Italiens Logique Mhz Traité Walibi animal appellation couler coulisses d'usage disant diversifié déboucher débouchés dégagé déguster dérive fumée garage inculpé intellectuelle l'actionnariat l'essence lisse morales peut-elle pro prospectus raisonnablement rapportent retombé régulier s'attaque sauter scolaires servira soirées suffira ultérieurement usagers Autriche Delta Economique Home ITT Iris Reweghs UNE assurant cardiaque catastrophique chaussure cocktail compatibles d'adresses d'immeubles durement détecteurs implanté intervenu intervenue jargon l'Inde l'instruction mixtes peso promoteur précisé ralentir rayonnement remplit remporte successivement séminaire travaillait urgence équipées Francisco Gabriel London Mélissa Nederland Pacific Portrait Reine Sipef Sophie académique africain allie bougent chaises condamnation crus d'intégrer digitale doubles décédé exclue fromages habitude imaginaire jugent l'utiliser l'étiquette mortes notations obtenue partent retrouvée roue récits sortant tolérance trouveront vice visuel visé vivement vivons émetteur Apparemment BP Dassault Elf Genk Ltd Museum accusations bactéries bouillon brillants clauses collaborer consentis cri d'amélioration d'arriver desserts dynamiques débouché déposée désigne emballage fumé gibier inscrits intelligence l'Angleterre l'assistance l'instauration l'optimisme l'égalité longuement légion ménagers noble normales polémique repérer secs sombres teneur traversé trucs évitant BNB Banques Belfox Don Hervé KUL Moyen-Orient N'oubliez Pays Photo aidant anonymes attrait avez-vous capitalisme censé clefs considérations d'Atlanta d'échelle demeurant high-tech linguistiques manteau monstre n'auront posées proposait préférer remarquablement s'appuie sagesse simplifier surprend tablent te trains écoulée écoute étiquette Constitution Rouge Valérie aboutit conformes conjointement conquis d'aucune d'espoir d'intégration d'époque devienne donnés faveurs gratuits impliqué inclut intelligente l'Irlande légalement nécessitent occasions perdant portera prenait propice rebelles religieuse réduisant sale sobriété sophistiqué sophistiqués spécificité transporteurs urgent usages Haaren Jusqu'ici L'Union Man Moteur Notre-Dame Products Robeco Verts Villa abondamment admirablement assistance casserole chaos citées confiant convenu d'échéance danois durables dépenser extraordinaires figurant installe l'agriculture manifestent marcher nappes paradoxe partagés protégés pédagogique raté renvoie résultant s'exprime soulignent temporairement trancher unes émanant épaules Brande Honda L'appareil Nissan Star Tourisme capitaine communistes compositions convertible d'imagination doter détenait fassent fermentation fréquents incité indexé intéressées majoration marine maxi meurt musicien musiques navire oppose parkings performante produites remontent rigide récolter s'intéressent salarial salée spectre spread studios tirent trading yens électricité étendre Black DAX Electrafina Ernst Gestion Gilbert Jim L'utilisation Lorsqu'un Pol Royaume Wide accompagne annoncées anticipée clés condamnés contentent d'apprentissage d'il d'éducation del diamants doré douleurs défavorable dénomination entretient farine favori fiche fluide huiles incroyable l'erreur l'implantation mentionner modéré multiple musulmans n'exclut participant prioritairement préjudice préventive réalisant suivis tué épices équilibrée Banksys Cornet Fontaine Golfe L'analyse L'effet L'image LVMH Laisser Nm Secundo Soir Texas alimentation annoncés assistant attrayante caché chinoises communaux comédien continents crayon d'adapter d'attention d'égalité dessiner dignes dira dotés enveloppe exporte facettes gosses indépendamment interrogations intégrale issues jupe l'apprentissage livret n'est-ce opportun planches présidents pénurie ratings regroupement respectifs restons retourne soixante séjours sénateur tailleur volaille voter week-ends Autour BSR J'en Jean-Jacques L'émission Mondiale SERGE VAN Vilvorde adversaires agressive complété conservent coutume croix d'attribution d'expression d'exécution d'habitation d'imaginer demandant disposés estimant gardent hoc hormis juristes mystérieux plonge réflexe s'agir s'interroge s'offre servant souples souscrite sus teintes Bus Cartier Dixon Geschäftsidee Lundi POUR Telle affectés amie apportées assume autorisation biologique cachent compatriotes conservant copains couvrant engouement grandir intégrées l'affichage l'américain l'attrait l'importation maigres merci mélanger plumes politiquement portugais pratiquée progressif proie qu'avant qu'ont reculer relier représentations respecté s'améliore soif statistique sympathie tenait trouvant vocabulaire Armani Caterpillar Champagne GIMV Koramic Ouvert Raison SRIW Steve Ter VTM Velde Wathelet arbre d'appliquer desquels déboires entamer escompté exister illustration indirecte justifiée l'angle l'autoroute l'emporte leadership légitime nettoyer nier observé opéré orientation placent projette rachetée raffiné rails remises retiendra roulant réussie satisfaits signatures tienne vastes voyait états Airways Ardennes Danvers Degroof Greenspan L'usine News Olivetti Rabobank Radio Systemat Vanden Xeikon aéroports barreau casse consenti convertir créance d'hier d'inspiration descend dominé dérapage filtre finissent fériés inutiles l'épouse librairie malheureux manifester n'auraient nippon parier patronat pis profile renseignement ressent robes réglementations réputés satin sculpteur sien transporter Albin Focus Gaston Greenpeace L'essentiel Prague Prince Rue Steel Temps amendes audit avéré confrontée contradiction d'enfant d'intérim dédié explosé exécutif foires imprimer l'accident l'union mandats ongles pensez-vous pensionnés persuadé poil provision provoquent radicalement remboursements renouveler représentés régie s'établir sexy supprimé suscitent téléphoner vignoble échoué écologiques éducation Airbus Bangkok Carlo Edouard Grand-Place Janssens Kinshasa Nouvel Time Trust anticiper asbl attendons basées biographie cliquet combiné conformément conservateurs d'Espagne d'actionnaires d'adaptation d'elles d'occasion designer douteuses enlever ferroviaire fossé giron généreuse haine hier implantations inférieures l'ONSS lorsqu'une obligatoirement paisible plaire pressé reliés révolte s'établit sexuel souhaitait stocker survivant tactique terriblement union viandes visés écrin évoquant Baan Desimpel Engineering L'inflation argumente attractif clan colorés comporter d'anciens demi-heure devenant définis départs envoyés express forcer frappant hormones islamistes l'Autriche poursuites pénible qu'est-ce rangement regroupant représentée requise riverains sourit transformée truffes turbulences économiquement écrivains Bordeaux CNP Caroline Clerck Fina Gilles Gol Prenez Puilaetco Puissance Yvan allez bilans blues bordure brin chef-d'oeuvre choisissent contestation d'Electrabel d'Italie d'exemplaires d'habitude d'équilibre d'éventuelles découle déflation emplacements entretenir entretiens freinage géographiques jolies l'Otan l'affiche linéaire lune manquait nations payante précise-t-il quelques-unes radicale rattrapage renouveau restaurer semi-conducteurs statue sélectionnés touchant échanger Atlanta Auto Avantage Bel Chemical EMI Indiens L'arrivée Packard alcool appétit attirent aurions banquette cessent comte céramique d'analystes d'introduction d'événements desquelles directrice décalage déclarés exposées grandi honte incarne interdiction l'Indonésie l'utilité meurtre monuments must nés percer performantes préparent prévoyait purée rappelé rejeté relié rédiger rétablir révélateur révélation s'appliquer s'ouvrir temple textiles tirage traversée visuelle échecs étonné Alan Boris Brigitte Guillaume Homme Innogenetics Jardin Jeanne N'est-ce Picqué RTL-TVi Restaurant Sioen Suisses accordés attentivement autorisée banale basilic cacao cauchemar coupes d'agneau d'efforts d'emballage d'exploiter d'installation d'équipe décideurs défendu déficits délégués déroulent exercent exécuté finira garantis gardant humanitaire impératif introduites l'acteur l'indexation mineur modems passages perquisitions plaignent princesse présidente raffinée recueillir refuge soft sterling suffi tragique verront viendront élaborer AGF Charges Grands Gustave Janssen Kennedy Kohl L'assureur Pascale apprentissage apprécient assise by catholiques chocs chrétien cl collectionneur compagnon d'UCB dangereuses demandés diffuse diffusé explicitement flou féminins gage honneur imprimé intelligents l'immense l'oreille l'émergence lacunes libellés majeures mexicain nu olympiques pairs penche pourparlers poursuivra prenez privilégiées prépension remarques récupéré régulation s'inscrire s'inspire s'étendre saura schémas sensualité sociaux-chrétiens titulaires ultérieure urbaine vaccin valables voor voyons écriture épingle épisode Anderlecht Bird Citons Droit Goossens J'y Marianne Président Roche agréablement aéronautique courtage d'aider debout devoirs distinctes dévoile interactive l'assassinat litige microprocesseur nomme osé parvenus patienter payement permanents protagonistes ralenti réplique subsistent symboles toxiques Astra Benetton Ci-dessous Dorénavant Eurotunnel Floride Hilton Imperial Japan L'ancien Navigator Révolution Simplement amende animés caution coquilles corrections d'emprunts d'influence déménagement déplace déroulement ensembles fermée folles ignorer individuellement installées interdite jambon l'empire libéré magnétique pionnier regret réflexions réunissant sud-africain séparé voté éloigné émettant Deprez Equipment Fondée L'exposition NZD PRATIQUE agenda bourses briser cerner chaudes combiner compatibilité concurrentielle confrontation consécutive d'efficacité déclarent dénicher employées exotique fourniture guerres hutu idéalement interdire l'Art l'asbl l'impulsion litiges législature marie masques mousseline nipponne octroyé précédé prénom préparés redonner respectant risqué réjouir réservation saturation senior trouverez Ahold Ancia Bancaire Central D'aucuns LCD Online Pouvez-vous Shakespeare Sont Vision bougies calmer confondre couloirs cuit d'effets d'excellentes duré démontrent euros fautes financée fortunes fournie grains inspiration intéressée intérieurs l'automatisation l'imprimerie modo motivations moulin mélodies ose persil reproduire régression sain scrutin succédé sursis survient séquences tracé éclat élan éprouve Audi Development Globalement Limbourg Loi Noir Philippines SPRL aimerait augmentant bricolage bruts cesser charmes comprends comptoir curieusement d'assainissement d'avions demandait décoratifs décrire empire emporté emprunter envergure flot fraction féminité islamique jouera l'animal l'euphorie luxueux manipuler muscles nocturne persiste poches prématuré présentera présidentielle prévient rassurant routiers salut sceptiques serons somptueux sursaut séparée télévisée Avez-vous Biest Créée Feiner Forum Munich Option Vlaanderen abondante adressé arabe bulles cartons casque civiles commercialisés contacter courent d'environnement d'intervenir d'étonnant diffusée décroche dénonce dénoncer désastre entamée espérons except fortiori fournies homologues incertain instituts l'embauche l'héritage l'étudiant libérale lie mafia nie nuages oscille pianiste polyester rachetant ronde satisfaisante solaires spatiale syndicaux séduisant Associates Beke Conclusion Eh Expo Fidelity L'Allemagne Nothomb PET accomplir bulletin cascade chutes cirque colloque compétitifs coordonnées coquille couverte créancier d'experts douteux détruit fondu grec grecque houlette inattendu intellectuels l'encadré luxembourgeoises majoritairement marier mariée monsieur nominale notera obligée ouvertement paysans poétique prolongée prometteurs provincial reconnus regretter rentre ris rosé réparer réservoir résistant s'attendent segmentation sentiers substitution suffirait tournoi treize triplé téléspectateurs vaudra écologistes Américain Bourgogne Burundi Celles Conservatoire Cuba Entreprendre IV Nations Normalement Saint-Jacques Schaerbeek Signalons accélérée adaptations africaine agressif aidé autonomes chauds civils combustible comités concurrentes consentir d'expliquer d'exportation dense découvrent défensive dévolu engendré envol forgé fréquentation graisse impliqués imposent inédit l'Australie l'anonymat l'imaginaire l'éclairage laps loisir molécules négoce pape pensait pensez phrases promenades ranger relevant s'inscrivent serre sollicité tentés thermique transparente Acheter CBF Canon Donaldson El Espace JP Libre alliés brosse coefficient comparaisons continueront coupables cultive cycliste d'Allemagne datent débouche déco entreprendre gourmandise gouvernementales griffe guichet indéterminée instructions interrogé l'adhésion l'assemblage l'audience l'océan l'énorme mobiliser pavé plantation ports puisqu'ils quatorze rationalisation renouer ridicule réglage réparti surmonter tarification tuyaux uniques Cisco EDI Fiscalité Gallimard Gandois Jos Mosane Nokia Usinor Vande Varsovie abandonne achevé ajoutent allusion annexes autoroute brusquement console cran d'Ostende d'adopter d'assemblage d'exception d'innovation déceler dérégulation favorites gourou l'Argentine l'allure l'enjeu made moelleux obtiennent panoplie photographique qu'ailleurs qu'entre redevable remonté remplie rentabiliser scandinaves serions sud-africaines suicide trim télétexte vierge vigoureuse visages voyant électoral Antonio BATC Gare Institut KNP Menus Renard Road Rops Sauvage abordable accueillent adresser approprié brillantes cachet casino catastrophes chargées ciment content courantes d'acquisition d'avant d'heures delta dysfonctionnements filtres gravures innombrables juriste jusqu'alors lampes mannequin parcouru polonais préférons prévenus pérennité quai quittent radiation refait regrouper revenant réduisent résisté réticences s'inquiéter solo temporaires Ah CAC Carl GIA Gassée House Idées Jersey Lufthansa Pacifique Partenaires Second Travel accompagnés alimenter augmentée aval battus bordeaux cohésion compensée complices compliquée conclus construits cuvée défaite flacons fuir habitué historiquement hit-parade improbable incluant informés j'y l'argument l'indemnité l'originalité l'ouest lires lumineuse managing mariages morosité mythes n'offre neuves offrait opérationnels peuples portés prolongé précaution puisqu'on pédophilie quasi-totalité retire rigoureux ristourne réalisable réalistes s'entendre tardive vies vital von Argentine DVD Distrigaz Forem Formule In Leys Maria Master Monaco PHOTOS Reserve Verbaet Witkowska Z accéléré acquises antérieurement avancent avoué chapitres circuler consacrent corrélation d'affirmer d'élargir d'équipements diminuent espérant fonder fusionner für general heurte hésiter jouissent l'aile l'institut laissez parution pleins profils prototypes quiconque rail rareté respire rythmes réservées sauvé scandales superbement trimestriel AAA Beethoven Ci-contre Commerzbank DGX Hormis Inusop PowerPC Prins Public Salomon accents accordées actrice annuelles antérieures brille cachés combinaisons contraints crucial d'enseignement demandée entoure fascinant fragiles globe haussier hérité inquiétudes juif manquera massifs mépris nippons odeurs ombre paille paraissait perceptible pertinence proportionnelle proportionnellement prévoyant psychologue recevront revendu reviendra risquer saga serez sous-jacent techniquement températures tiens échantillon CE CFE Coca Directeur Heysel Ier Jacob Paix Samedi Simple Tobback Trends UEM Vinck adoptent centimes centraux collants communisme consistait d'ail d'ensemble d'exposition devenait défenseurs dépendant dévoiler enregistrent fameuses gagnants indicatif indifférent intégrante intéressent inversement kW l'allemand l'apéritif l'important n'échappe objective occupants pains perle phares planétaire pointes poulet prioritaire précoce quo recommencer représentées roule réputée rétablissement sonne spirale tendent tiroirs traitent trouvaient validité variantes verticale vole église équilibré Armand Carlier Distribution Fred L'ouvrage Monceau-Zolder Officiellement Passer Patriotique Réflexions SGB Shop Toshiba absorbe acceptée agissent aimer apparences appliqués ascension attaques attitudes autorisés blessures cathédrale contrer d'essence d'examiner divergences dix-huit détachement formuler implications l'effondrement l'habitacle libérales loup magnifiques mainframes miroirs offensive ondes organe porte-monnaie professionnalisme préside recueilli rentes report retards revendeurs rez-de-chaussée roulement ruines rénové sienne stimule toilette utilitaires voudraient Audiofina BRUXELLES Bilan Colin Continental Dommage Ferrari Laurence MBA UPS appelées artisanale automobilistes berceau bloquer brancher classés communique continentale convivial d'analyser d'intérieur détaillé détaillée estimait examiné facto glissement grise incident kit know-how l'Occident légitimité nommer organisent photographes pionniers profitera prometteuse prudemment radical rater siens simplification small spécificités suspects tarder urbains veine vinaigrette vingt-cinq écoulé Chiffre Dimanche Havas Metropolitan Presque Viennent Village agréables agréé animations caviar chauffeurs concepteur conteneurs coureurs d'Union d'envisager d'opinion deuil débarque déclenche examens executive formalités fragilité gourmande gratuites inflationnistes introductions isolés justifient l'abbaye l'épargnant lacune limitant marin new-yorkais occupant parvenue relie remplacés reportage représentatif réparations s'attaquer sonores soutiennent tirés trouvons turbodiesel violent Adresse Casino Delaunois Fafer Industrie Inversement Longtemps Manche Med Montréal One Partout Pérou Robe Rose Sachez Spadel Stefaan Véritable auto bars bizarre blonde cercles chapelle compté conformité créatifs créatrice culpabilité d'Apple d'exercer d'échapper d'étendre désordre exécuter gammes gastronomique guider générique homologue imagination immanquablement impressions impératifs initiés irlandais jouet kilo l'abonnement l'habitation l'inventeur l'élection loger marasme mutuelle médiocres n'est-elle nobles odeur oignons opinions plates-formes pratiquant provocation prédit retomber routine répandu répandue sous-sol soviétique subtil sélectionné tabou tache taxer touchés usées élaborée émane ABN-Amro BEI Beecham COIB Cirque Claire Direct Interim Louvre Mazda Qu'on Recherche Sablon SmithKline a-t-on actualité ambiant antenne associe blessés boules bourgeois brun caves chirurgie classer colis consommé d'accompagnement d'affichage d'aménagement d'enregistrer d'école demandeur déploie désespoir emplacement ennemi envisageable essayons foyers frites gouttes illusion j jugées l'amateur l'axe l'opposé larmes lingerie longévité lorsqu'elles manches manne mette muni navires pharmacien potentielle procurent protégée préoccupe rigoureuse soyez strangle tentant transmet trouvée variant viser volés Ariane BREF Bart Bruxelles-Capitale Cola cicero-0.7.2/TODO0000644000076400007640000000145510542130500012121 0ustar niconico-ALSA interface -Remove dependency on sox for saypho and bulktalk. -Filters: consider adding a dictionnary-based filter for full word matches. -Filter non-printables properly. Préfiltrage: ttp.PhonetizeError: Char unmatched <«> 171 -Roman numbers filter. -Volume and speed controls. -Trace calls: disabling tracing just throws away debugging strings instead of printing them, but we still waste a lot of effort preparing those strings. -Chunking in phonetizer is somewhat crude... -MBROLA output estimation: improve heuristic, timeout to save us if we guess wrong. -Use very long text as a reference to see impact of new rules. -Make a regression example text file for numbers. -Improve text preparation. -Less crude config file. -FIXME's... -User dictionnary. -Bridge with more standard speech APIs. cicero-0.7.2/ttp.py0000644000076400007640000003213211026545563012627 0ustar niconico# -*- coding: utf-8 # This file is part of Cicero TTS. # Cicero TTS: A Small, Fast and Free Text-To-Speech Engine. # Copyright (C) 2003-2008 Nicolas Pitre # Copyright (C) 2003-2008 Stéphane Doyon # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2. # See the accompanying COPYING file for more details. # # This program comes with ABSOLUTELY NO WARRANTY. # Text to phoneme engine: reads language rule, applies filters, # does text-to-phonemes and prosody. import sys, re, os, stat import tracing def trace(msg): mod = 'ttp' tracing.trace(mod+': '+msg) import config from profiling import * def expand_char_class(str, class_list): if str is None: return "" while 1: again = 0 for targ, subs in class_list : str, n = targ.subn(subs, str) again = again + n if not again: break return str def read_rules(filename): phonems = {} rules = {} filters = [] char_class = [] pitch_def = {} f = file(filename, "r") filetime = os.fstat(f.fileno())[stat.ST_MTIME] # remove coments, extra blanks, end of line, etc. cleanup = re.compile( r"\s+#.*|(?\s+\"(.*)\"$" ) # a phonetic rule rule = re.compile( r"^\s*((?P\S+)\s+)?" r"\[\[ (?P\S+) \]\]\s+" r"((?P\S+)\s+)?" r"\-\>\s*(?P.*)$" ) # Special char _ means space for convenience in filter and rule # patterns, unless preceeded with \. underline = re.compile(r'(?= preSpaces+n1 if n1: v = inxposes[preSpaces] elif preSpaces: v = inxposes[preSpaces-1] else: v = 0 inxposes[preSpaces:preSpaces+n1] = [v]*n2 return r, n2 for targ, subs in filters: #text = re.sub(targ, repl, text) prestr = '' preSpaces = 0 while text: m = re.search(targ, text) if not m: prestr += text break pre = text[:m.start()] prestr += pre preSpaces += pre.count(' ') r, nSpaces = repl(m, preSpaces) text = text[m.end():] prestr += r preSpaces += nSpaces text = prestr #print '%s -> %s' % (targ.pattern, subs) #print text assert len(inxposes) == text.count(' ') +1 trace('filter output: <%s>' % text) return text, inxposes class PhonetizeError(Exception): pass def phonetize(text, rules, showrules=0): done = "" res = [] while text: try: for left, right, pho,n, ln, rule_line in rules[text[0]]: lm = left.search(done) if not lm: continue match = right.match(text) if not match: continue if showrules: sys.stderr.write('%d: { %s } -- [ %s | %s | %s ]\n' \ % (ln+1, rule_line, lm.group(), text[:n], match.group()[n:])) # keep last 20 chars of "done" context. 20 is arbitrary. done = (done + text[:n])[-20:] text = text[n:] res.extend(pho) break else: # FIXME: provide necessary debugging info, and a config # option to die (so we notice) or continue (for # non-developers). raise PhonetizeError('No rule matched') done = done + text[0] text = text[1:] except KeyError: # FIXME: provide necessary debugging info sys.stderr.write('Char unmatched <%s> %d\n' % (text[0], ord(text[0]))) done = done + text[0] text = text[1:] return res def prosodize(phono, pitch_def): phono = phono[:] durations = [] pitches = [] speed = 0 while phono: phos = [] v = 0 while phono: p = phono.pop(0) phos.append(p) ty = phonems[p][0] if ty == 'V': v += 1 elif ty == 'P': break if ty != 'P': punc = '_' else: punc = p if v == 0: pitchdef = [] else: try: pitchdef = list(pitch_def[punc][v]) except IndexError: pitchdef = list(pitch_def[punc][-1]) pitchdef[1:1] = [None]*(v-len(pitchdef)) for p in phos: if phonems[p][0] == 'V': pitches.append(pitchdef.pop(0)) else: pitches.append(None) durs = [phonems[p][1] for p in phos] for i,d in enumerate(durs): if speed: durs[i] = d * (100 - speed) / 100 speed /= 2 else: break durs.reverse() speed = pitch_def[punc][0][0] for i,d in enumerate(durs): if speed: durs[i] = d * (100 - speed) / 100 speed /= 2 else: break durs.reverse() durations.extend(durs) speed = pitch_def[punc][0][1] return durations, pitches m = ProfMonitor('ttp.load') rules, filters, phonems, pitch_def, filetime = read_rules(config.rulefile) ~m def checkReloadRules(): try: newtime = os.stat(config.rulefile)[stat.ST_MTIME] except OSError: return global rules, filters, phonems, pitch_def, filetime if newtime >filetime: trace('Reloading updated rules file') try: r,f,ph,pi,ft = read_rules(config.rulefile) except: trace('Error in new rule file, keeping old rule set') filetime = newtime # don't retry until it changes again. return else: rules, filters, phonems, pitch_def, filetime = r,f,ph,pi,ft spaces = re.compile(r'\s+') def init_inxposes(str): # Original input length inputLen = len(str) # Note index position in original input where stretches of spaces end. inxposes = [] def repl(m): inxposes.append(m.end()) # keep a flag ("\t") to indicate the presence of multiple spaces return " \t"[:len(m.group())] str = spaces.sub(repl, str) # Last index is a bit special: marks end of text. inxposes.append(inputLen) return str, inxposes def word2filtered(str): str, inxposes = init_inxposes(str) str, inxposes = filter_text(str, filters, inxposes) return str def word2phons(str, showrules=0): checkReloadRules() str, inxposes = init_inxposes(str) str, inxposes = filter_text(str, filters, inxposes) phono = phonetize(str, rules, showrules) return ' '.join(phono) def mkIndexes(phono, durations, inxposes): total_dur = 0 # indexes: list of tuples: time in ms, position in original input. indexes = [(0,0)] for pho,dur in zip(phono, durations): total_dur += dur if pho in ('_', '&', '-'): indexes.append( (total_dur, inxposes.pop(0)) ) # end marker indexes.append( (total_dur, inxposes.pop(0)) ) return indexes def mkMbrola(phono, durations, pitches): out = [] for pho,dur,pitch in zip(phono, durations, pitches): if not dur: continue if phonems[pho][0] == 'P': pho = '_' out.append("%s\t%d\t%s\n" % (pho, dur, pitch or "")) # we insert "_ 1" to avoid a "o-_ Concat : PANIC, check your pitch :-)" # from mbrola in some cases. out.append("_\t1\n#\n") out = "".join(out) return out def phons2mbrola(phono): durations, pitches = prosodize(phono, pitch_def) out = mkMbrola(phono, durations, pitches) return out for f in ('init_inxposes', 'filter_text', 'phonetize', 'prosodize', 'mkIndexes', 'mkMbrola'): globals()[f] = ProfProxy('ttp.'+f, globals()[f]) def process(str, showrules=0): checkReloadRules() # FIXME: we ought to cleanup non-printables somewhere. str, inxposes = init_inxposes(str) str, inxposes = filter_text(str, filters, inxposes) phono = phonetize(str, rules, showrules) #trace(phono) assert len(re.findall('[_&-]', ' '.join(phono))) +1 == len(inxposes) durations, pitches = prosodize(phono, pitch_def) indexes = mkIndexes(phono, durations, inxposes) out = mkMbrola(phono, durations, pitches) return out, indexes if 0 and __name__ == "__main__": # Speak text read from command-line. # Deprecated. See tts_shell.py and app_shell.py. # I'm keeping it as a bare bones example. cmd = config.mbrola_prog_path \ + " -f " + str(config.mbrola_f) \ + " -t " + str(config.mbrola_t) \ + " -e " + config.mbrola_voice \ + " - -.raw | sox -traw -r16000 -c1 -w -s - -tossdsp " + config.snd_dev import os pipe = os.popen(cmd, 'w') while 1: line = sys.stdin.readline() if not line: break out, indexes = process(line) out = out.split('\n') out.insert(0, "_\t50") out.insert(-2, "_\t500") out = '\n'.join(out) print out #print indexes pipe.write(out) pipe.flush() cicero-0.7.2/saypho.py0000755000076400007640000000242111026545563013324 0ustar niconico#!/usr/bin/python # -*- coding: utf-8 # This file is part of Cicero TTS. # Cicero TTS: A Small, Fast and Free Text-To-Speech Engine. # Copyright (C) 2003-2008 Nicolas Pitre # Copyright (C) 2003-2008 Stéphane Doyon # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2. # See the accompanying COPYING file for more details. # # This program comes with ABSOLUTELY NO WARRANTY. # Takes a list of phonemes as input and uses mbrola and sox to speak them out. import sys, os import setencoding import config import ttp if __name__ == "__main__": setencoding.stdfilesEncoding() setencoding.decodeArgs() cmd = config.mbrola_prog_path \ + " -f " + str(config.mbrola_f) \ + " -t " + str(config.mbrola_t) \ + " -e " + config.mbrola_voice \ + " - -.raw | sox -traw -r16000 -c1 -w -s - -tossdsp " + config.snd_dev pipe = os.popen(cmd, 'w') phos = sys.argv[1:] if len(phos) == 1: phos = phos[0].split() out = ttp.phons2mbrola(phos) out = out.split('\n') out.insert(0, "_\t200") out.insert(-2, "_\t200") out = '\n'.join(out) print out pipe.write(out) pipe.flush() cicero-0.7.2/top2000en.txt0000644000076400007640000006103610030206662013627 0ustar niconicoa det ability n able adj about adv about prep above adv above prep absence n absolutely adv academic adj accept v access n accident n accompany v according to prep account n account v achieve v achievement n acid n acquire v across prep act n act v action n active adj activity n actual adj actually adv add v addition n additional adj address n address v administration n admit v adopt v adult n advance n advantage n advice n advise v affair n affect v afford v afraid adj after conj after prep afternoon n afterwards adv again adv against prep age n agency n agent n ago adv agree v agreement n ahead adv aid n aim n aim v air n aircraft n all adv all det allow v almost adv alone adj alone adv along adv along prep already adv alright adv also adv alternative adj alternative n although conj always adv among prep amongst prep amount n an det analysis n ancient adj and conj animal n announce v annual adj another det answer n answer v any det anybody pron anyone pron anything pron anyway adv apart adv apparent adj apparently adv appeal n appeal v appear v appearance n application n apply v appoint v appointment n approach n approach v appropriate adj approve v area n argue v argument n arise v arm n army n around adv around prep arrange v arrangement n arrive v art n article n artist n as adv as conj as prep ask v aspect n assembly n assess v assessment n asset n associate v association n assume v assumption n at prep atmosphere n attach v attack n attack v attempt n attempt v attend v attention n attitude n attract v attractive adj audience n author n authority n available adj average adj avoid v award n award v aware adj away adv aye interjection baby n back adv back n background n bad adj bag n balance n ball n band n bank n bar n base n base v basic adj basis n battle n be v bear v beat v beautiful adj because conj become v bed n bedroom n before adv before conj before prep begin v beginning n behaviour n behind prep belief n believe v belong v below adv below prep beneath prep benefit n beside prep best adv better adv between prep beyond prep big adj bill n bind v bird n birth n bit n black adj block n blood n bloody adj blow v blue adj board n boat n body n bone n book n border n both adv both det bottle n bottom n box n boy n brain n branch n break v breath n bridge n brief adj bright adj bring v broad adj brother n budget n build v building n burn v bus n business n busy adj but conj buy v by prep cabinet n call n call v campaign n can modal candidate n capable adj capacity n capital n car n card n care n care v career n careful adj carefully adv carry v case n cash n cat n catch v category n cause n cause v cell n central adj centre n century n certain adj certainly adv chain n chair n chairman n challenge n chance n change n change v channel n chapter n character n characteristic n charge n charge v cheap adj check v chemical n chief adj child n choice n choose v church n circle n circumstance n citizen n city n civil adj claim n claim v class n clean adj clear adj clear v clearly adv client n climb v close adj close adv close v closely adv clothes n club n coal n code n coffee n cold adj colleague n collect v collection n college n colour n combination n combine v come v comment n comment v commercial adj commission n commit v commitment n committee n common adj communication n community n company n compare v comparison n competition n complete adj complete v completely adv complex adj component n computer n concentrate v concentration n concept n concern n concern v concerned adj conclude v conclusion n condition n conduct v conference n confidence n confirm v conflict n congress n connect v connection n consequence n conservative adj consider v considerable adj consideration n consist v constant adj construction n consumer n contact n contact v contain v content n context n continue v contract n contrast n contribute v contribution n control n control v convention n conversation n copy n corner n corporate adj correct adj cos conj cost n cost v could modal council n count v country n county n couple n course n court n cover n cover v create v creation n credit n crime n criminal adj crisis n criterion n critical adj criticism n cross v crowd n cry v cultural adj culture n cup n current adj currently adv curriculum n customer n cut n cut v damage n damage v danger n dangerous adj dark adj data n date n date v daughter n day n dead adj deal n deal v death n debate n debt n decade n decide v decision n declare v deep adj deep adv defence n defendant n define v definition n degree n deliver v demand n demand v democratic adj demonstrate v deny v department n depend v deputy n derive v describe v description n design n design v desire n desk n despite prep destroy v detail n detailed adj determine v develop v development n device n die v difference n different adj difficult adj difficulty n dinner n direct adj direct v direction n directly adv director n disappear v discipline n discover v discuss v discussion n disease n display n display v distance n distinction n distribution n district n divide v division n do v doctor n document n dog n domestic adj door n double adj doubt n down adv down prep draw v drawing n dream n dress n dress v drink n drink v drive n drive v driver n drop v drug n dry adj due adj during prep duty n each det ear n early adj early adv earn v earth n easily adv east n easy adj eat v economic adj economy n edge n editor n education n educational adj effect n effective adj effectively adv effort n egg n either adv either det elderly adj election n element n else adv elsewhere adv emerge v emphasis n employ v employee n employer n employment n empty adj enable v encourage v end n end v enemy n energy n engine n engineering n enjoy v enough adv enough det ensure v enter v enterprise n entire adj entirely adv entitle v entry n environment n environmental adj equal adj equally adv equipment n error n escape v especially adv essential adj establish v establishment n estate n estimate v even adv evening n event n eventually adv ever adv every det everybody pron everyone pron everything pron evidence n exactly adv examination n examine v example n excellent adj except conj exchange n executive n exercise n exercise v exhibition n exist v existence n existing adj expect v expectation n expenditure n expense n expensive adj experience n experience v experiment n expert n explain v explanation n explore v express v expression n extend v extent n external adj extra adj extremely adv eye n face n face v facility n fact n factor n factory n fail v failure n fair adj fairly adv faith n fall n fall v familiar adj family n famous adj far adj far adv farm n farmer n fashion n fast adj fast adv father n favour n fear n fear v feature n fee n feel v feeling n female adj few det few n field n fight v figure n file n fill v film n final adj finally adv finance n financial adj find v finding n fine adj finger n finish v fire n firm n first adj fish n fit v fix v flat n flight n floor n flow n flower n fly v focus v follow v following adj food n foot n football n for conj for prep force n force v foreign adj forest n forget v form n form v formal adj former det forward adv foundation n free adj freedom n frequently adv fresh adj friend n from prep front adj front n fruit n fuel n full adj fully adv function n fund n funny adj further adv future adj future n gain v game n garden n gas n gate n gather v general adj general n generally adv generate v generation n gentleman n get v girl n give v glass n go v goal n god n gold n good adj good n government n grant n grant v great adj green adj grey adj ground n group n grow v growing adj growth n guest n guide n gun n hair n half det half n hall n hand n hand v handle v hang v happen v happy adj hard adj hard adv hardly adv hate v have v he pron head n head v health n hear v heart n heat n heavy adj hell n help n help v hence adv her det her pron here adv herself pron hide v high adj high adv highly adv hill n him pron himself pron his det his pron historical adj history n hit v hold v hole n holiday n home adv home n hope n hope v horse n hospital n hot adj hotel n hour n house n household n housing n how adv however adv huge adj human adj human n hurt v husband n i pron idea n identify v if conj ignore v illustrate v image n imagine v immediate adj immediately adv impact n implication n imply v importance n important adj impose v impossible adj impression n improve v improvement n in adv in prep incident n include v including prep income n increase n increase v increased adj increasingly adv indeed adv independent adj index n indicate v individual adj individual n industrial adj industry n influence n influence v inform v information n initial adj initiative n injury n inside adv inside prep insist v instance n instead adv institute n institution n instruction n instrument n insurance n intend v intention n interest n interested adj interesting adj internal adj international adj interpretation n interview n into prep introduce v introduction n investigate v investigation n investment n invite v involve v iron n island n issue n issue v it pron item n its det itself pron job n join v joint adj journey n judge n judge v jump v just adv justice n keep v key adj key n kid n kill v kind n king n kitchen n knee n know v knowledge n labour adj labour n lack n lady n land n language n large adj largely adv last adj last v late adj late adv later adv latter det laugh v launch v law n lawyer n lay v lead n lead v leader n leadership n leading adj leaf n league n lean v learn v least adv leave v left adj leg n legal adj legislation n length n less adv less det let v letter n level n liability n liberal adj library n lie v life n lift v light adj light n like prep like v likely adj limit n limit v limited adj line n link n link v lip n list n listen v literature n little adj little adv little det live v living adj loan n local adj location n long adj long adv look n look v lord n lose v loss n lot n love n love v lovely adj low adj lunch n machine n magazine n main adj mainly adv maintain v major adj majority n make v male adj male n man n manage v management n manager n manner n many det map n mark n mark v market n market v marriage n married adj marry v mass n master n match n match v material n matter n matter v may modal may modal maybe adv me pron meal n mean v meaning n means n meanwhile adv measure n measure v mechanism n media n medical adj meet v meeting n member n membership n memory n mental adj mention v merely adv message n metal n method n middle n might modal mile n military adj milk n mind n mind v mine n minister n ministry n minute n miss v mistake n model n modern adj module n moment n money n month n more adv more det morning n most adv most det mother n motion n motor n mountain n mouth n move n move v movement n much adv much det murder n museum n music n must modal my det myself pron name n name v narrow adj nation n national adj natural adj nature n near prep nearly adv necessarily adv necessary adj neck n need n need v negotiation n neighbour n neither adv network n never adv nevertheless adv new adj news n newspaper n next adv next det nice adj night n no adv no det no interjection no-one pron nobody pron nod v noise n none pron nor conj normal adj normally adv north n northern adj nose n not adv note n note v nothing pron notice n notice v notion n now adv nuclear adj number n nurse n object n objective n observation n observe v obtain v obvious adj obviously adv occasion n occur v odd adj of prep off adv off prep offence n offer n offer v office n officer n official adj official n often adv oil n okay adv old adj on adv on prep once adv once conj one pron only adj only adv onto prep open adj open v operate v operation n opinion n opportunity n opposition n option n or conj order n order v ordinary adj organisation n organise v organization n origin n original adj other adj other n other pron otherwise adv ought modal our det ourselves pron out adv outcome n output n outside adv outside prep over adv over prep overall adj own det own v owner n package n page n pain n paint v painting n pair n panel n paper n parent n park n parliament n part n particular adj particularly adv partly adv partner n party n pass v passage n past adj past n past prep path n patient n pattern n pay n pay v payment n peace n pension n people n per prep percent n perfect adj perform v performance n perhaps adv period n permanent adj person n personal adj persuade v phase n phone n photograph n physical adj pick v picture n piece n place n place v plan n plan v planning n plant n plastic n plate n play n play v player n please adv pleasure n plenty pron plus prep pocket n point n point v police n policy n political adj politics n pool n poor adj popular adj population n position n positive adj possibility n possible adj possibly adv post n potential adj potential n pound n power n powerful adj practical adj practice n prefer v prepare v presence n present adj present n present v president n press n press v pressure n pretty adv prevent v previous adj previously adv price n primary adj prime adj principle n priority n prison n prisoner n private adj probably adv problem n procedure n process n produce v product n production n professional adj profit n program n programme n progress n project n promise v promote v proper adj properly adv property n proportion n propose v proposal n prospect n protect v protection n prove v provide v provided conj provision n pub n public adj public n publication n publish v pull v pupil n purpose n push v put v quality n quarter n question n question v quick adj quickly adv quiet adj quite adv race n radio n railway n rain n raise v range n rapidly adv rare adj rate n rather adv reach v reaction n read v reader n reading n ready adj real adj realise v reality n realize v really adv reason n reasonable adj recall v receive v recent adj recently adv recognise v recognition n recognize v recommend v record n record v recover v red adj reduce v reduction n refer v reference n reflect v reform n refuse v regard v region n regional adj regular adj regulation n reject v relate v relation n relationship n relative adj relatively adv release n release v relevant adj relief n religion n religious adj rely v remain v remember v remind v remove v repeat v replace v reply v report n report v represent v representation n representative n request n require v requirement n research n resource n respect n respond v response n responsibility n responsible adj rest n rest v restaurant n result n result v retain v return n return v reveal v revenue n review n revolution n rich adj ride v right adj right adv right n ring n ring v rise n rise v risk n river n road n rock n role n roll v roof n room n round adv round prep route n row n royal adj rule n run n run v rural adj safe adj safety n sale n same det sample n satisfy v save v say v scale n scene n scheme n school n science n scientific adj scientist n score v screen n sea n search n search v season n seat n second n secondary adj secretary n section n sector n secure v security n see v seek v seem v select v selection n sell v send v senior adj sense n sentence n separate adj separate v sequence n series n serious adj seriously adv servant n serve v service n session n set n set v settle v settlement n several det severe adj sex n sexual adj shake v shall modal shape n share n share v she pron sheet n ship n shoe n shoot v shop n short adj shot n should modal shoulder n shout v show n show v shut v side n sight n sign n sign v signal n significance n significant adj silence n similar adj simple adj simply adv since conj since prep sing v single adj sir n sister n sit v site n situation n size n skill n skin n sky n sleep v slightly adv slip v slow adj slowly adv small adj smile n smile v so adv so conj social adj society n soft adj software n soil n soldier n solicitor n solution n some det somebody pron someone pron something pron sometimes adv somewhat adv somewhere adv son n song n soon adv sorry adj sort n sound n sound v source n south n southern adj space n speak v speaker n special adj species n specific adj speech n speed n spend v spirit n sport n spot n spread v spring n staff n stage n stand v standard adj standard n star n star v start n start v state n state v statement n station n status n stay v steal v step n step v stick v still adv stock n stone n stop v store n story n straight adv strange adj strategy n street n strength n strike n strike v strong adj strongly adv structure n student n studio n study n study v stuff n style n subject n substantial adj succeed v success n successful adj such det suddenly adv suffer v sufficient adj suggest v suggestion n suitable adj sum n summer n sun n supply n supply v support n support v suppose v sure adj surely adv surface n surprise n surround v survey n survive v switch v system n table n take v talk n talk v tall adj tape n target n task n tax n tea n teach v teacher n teaching n team n tear n technical adj technique n technology n telephone n television n tell v temperature n tend v term n terms n terrible adj test n test v text n than conj thank v thanks n that conj that det the det theatre n their det them pron theme n themselves pron then adv theory n there adv there pron therefore adv these det they pron thin adj thing n think v this det those det though adv though conj thought n threat n threaten v through adv through prep throughout prep throw v thus adv ticket n time n tiny adj title n to adv to infinitive-marker to prep today adv together adv tomorrow adv tone n tonight adv too adv tool n tooth n top adj top n total adj total n totally adv touch n touch v tour n towards prep town n track n trade n tradition n traditional adj traffic n train n train v training n transfer n transfer v transport n travel v treat v treatment n treaty n tree n trend n trial n trip n troop n trouble n true adj trust n truth n try v turn n turn v twice adv type n typical adj unable adj under adv under prep understand v understanding n undertake v unemployment n unfortunately adv union n unit n united adj university n unless conj unlikely adj until conj until prep up adv up prep upon prep upper adj urban adj us pron use n use v used adj used modal useful adj user n usual adj usually adv value n variation n variety n various adj vary v vast adj vehicle n version n very adj very adv via prep victim n victory n video n view n village n violence n vision n visit n visit v visitor n vital adj voice n volume n vote n vote v wage n wait v walk n walk v wall n want v war n warm adj warn v wash v watch v water n wave n way n we pron weak adj weapon n wear v weather n week n weekend n weight n welcome v welfare n well adv well interjection west n western adj what det whatever det when adv when conj where adv where conj whereas conj whether conj which det while conj while n whilst conj white adj who pron whole adj whole n whom pron whose det why adv wide adj widely adv wife n wild adj will modal will n win v wind n window n wine n wing n winner n winter n wish v with prep withdraw v within prep without prep woman n wonder v wonderful adj wood n word n work n work v worker n working adj works n world n worry v worth prep would modal write v writer n writing n wrong adj yard n yeah interjection year n yes interjection yesterday adv yet adv you pron young adj your det yourself pron youth n cicero-0.7.2/tts_shell.py0000755000076400007640000000133511026545563014025 0ustar niconico#!/usr/bin/python # -*- coding: utf-8 # This file is part of Cicero TTS. # Cicero TTS: A Small, Fast and Free Text-To-Speech Engine. # Copyright (C) 2003-2008 Nicolas Pitre # Copyright (C) 2003-2008 Stéphane Doyon # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2. # See the accompanying COPYING file for more details. # # This program comes with ABSOLUTELY NO WARRANTY. # This is an executable script that will invoke the tts configured to # run from a simple shell-like interface. import app_shell, main if __name__ == "__main__": s = main.SpeechServ(app_shell.AppFeed) s.run() cicero-0.7.2/tracing.py0000644000076400007640000000157111026545563013452 0ustar niconico# -*- coding: utf-8 # This file is part of Cicero TTS. # Cicero TTS: A Small, Fast and Free Text-To-Speech Engine. # Copyright (C) 2003-2008 Nicolas Pitre # Copyright (C) 2003-2008 Stéphane Doyon # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2. # See the accompanying COPYING file for more details. # # This program comes with ABSOLUTELY NO WARRANTY. # Simplistic debugging utility. # TODO: Debugging/tracing levels or channels. import sys, time import config _start = time.time() def trace(msg): elapsed = time.time() - _start if type(msg) != type(u''): msg = str(msg) sys.stderr.write(('tr %.3f: ' % elapsed)+msg+'\n') sys.stderr.flush() def trace_noop(ms): pass if not config.tracing: trace = trace_noop cicero-0.7.2/wphons.py0000755000076400007640000000220211026545563013334 0ustar niconico#!/usr/bin/python # -*- coding: utf-8 # This file is part of Cicero TTS. # Cicero TTS: A Small, Fast and Free Text-To-Speech Engine. # Copyright (C) 2003-2008 Nicolas Pitre # Copyright (C) 2003-2008 Stéphane Doyon # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2. # See the accompanying COPYING file for more details. # # This program comes with ABSOLUTELY NO WARRANTY. # Takes text as input and translates it to a list of phonemes. # Shows applied rules as it goes. import sys import setencoding import ttp import tracing def trace(msg): mod = 'wphons' tracing.trace(mod+': '+msg) if __name__ == "__main__": setencoding.stdfilesEncoding() setencoding.decodeArgs() if len(sys.argv) > 1: words = sys.argv[1:] else: words = sys.stdin.readlines() words = [w.strip() for w in words] trace('Got %d words' % len(words)) for i,w in enumerate(words): phons = ttp.word2phons(w,1) sys.stdout.write('%s -> %s\n' % (w,phons)) sys.stdout.flush() cicero-0.7.2/COPYING0000644000076400007640000004313110053545156012477 0ustar niconico GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 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 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. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 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. 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. 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 machine-readable 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. 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. 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. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, 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 INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE 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. END OF TERMS AND CONDITIONS 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. Copyright (C) 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 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) year 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. , 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. cicero-0.7.2/config.py.sample0000644000076400007640000000126610301544265014542 0ustar niconico# For now we gather config options here. # TODO: Make this a robustly parsed external config file, rather than having # users edit code. # Language phonetic rules and filters. rulefile = "/home/foo/cicero/rules.fr" # List of known good phonetic translations for regression check testfile = "/home/foo/cicero/checklist.fr" # MBROLA executable mbrola_prog_path = '/usr/local/bin/mbrola' # MBROLA voice file mbrola_voice = '/usr/local/lib/mbrola/fr1/fr1' # pitch factor mbrola_f = 0.95 # default time factor (smaller talks faster) # note: BRLTTY for example might override this with its own value mbrola_t = 0.9 # Output sound device snd_dev = '/dev/dsp' # Debugging output on stderr tracing = 0 cicero-0.7.2/checklist.fr0000644000076400007640000003174611026545563013762 0ustar niconico# This file is part of Cicero TTS. # Cicero TTS: A Small, Fast and Free Text-To-Speech Engine. # Copyright (C) 2003-2008 Nicolas Pitre # Copyright (C) 2003-2008 Stéphane Doyon # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2. # See the accompanying COPYING file for more details. # # This program comes with ABSOLUTELY NO WARRANTY. a -> a déjà -> d e Z a pâte -> p a t reggae -> R E g e vitae -> v i t e Caen -> k a a~ maestro -> m a e s t R o maître -> m E t R faim -> f e~ pain -> p e~ faisons -> f @ z o~ faisan -> f @ z a~ paille -> p a j bail -> b a j aile -> E l amnistie -> a m n i s t i programmation -> p R O g R a m a s j o~ camp -> k a~ tram -> t R a m manne -> m a n ancien -> a~ s j e~ août -> u t Paul -> p O l autruche -> o t R y S pays -> p E i paysage -> p E i z a Z aymé -> E m e paye -> p E j bateau -> b a t o b -> b e byte -> b a i t bytes -> b a i t s abbé -> a b e plomb -> p l o~ applomb -> a p l o~ aube -> o b c -> s e c'est -> s E rançon -> R a~ s o~ bacchanale -> b a k a n a l accéder -> a k s e d e occuper -> O k y p e archétype -> a R k e t i p architecte -> a R S i t E k t orchidée -> O R k i d e orchestre -> O R k E s t R chorale -> k O R a l match -> m a t S chrétien -> k R e t j e~ chien -> S j e~ nickel -> n i k E l grecque -> g R E k pecq -> p E k scène -> s E n cède -> s E d banc -> b a~ recoin -> R @ k w e~ donc -> d o~ k d -> d e addition -> a d i s j o~ grand -> g R a~ Rembrandt -> R a~ b R a~ pied -> p j e lourd -> l u R placard -> p l a k a R don -> d o~ bled -> b l E d e -> @ bateau -> b a t o cheveaux -> S @ v o Jean -> Z a~ Jeanne -> Z a n aspect -> a s p E suspects -> s y s p E pied -> p j e meeting -> m i t i N peindre -> p e~ d R vieille -> v j E j neige -> n E Z selle -> s E l l caramel -> k a R a m E l celsius -> s E l s j y s emmancher -> a~ m a~ S e salem -> s a l E m femme -> f a m décembre -> d e s a~ b R en -> a~ enharmonique -> a~ n a R m O n i k enivrer -> a~ n i v R e patient -> p a s j a~ patience -> p a s j a~ s ennui -> a~ n H i penne -> p E n mienne -> m j E n ennemi -> E n @ m i dents -> d a~ couvents -> k u v a~ présents -> p R e z a~ cent -> s a~ vent -> v a~ lent -> l a~ dent -> d a~ accent -> a k s a~ conscient -> k o~ s j a~ coefficient -> k o E f i s j a~ revient -> R @ v j e~ talent -> t a l a~ équivalent -> e k i v a l a~ prudemment -> p R y d a m a~ vitement -> v i t m a~ moment -> m O m a~ elles -> E l l couvent -> k u v a~ le -> l @ couvent -> k u v a~ étaient -> e t E mangent -> m a~ Z viendra -> v j e~ d R a tien -> t j e~ amen -> a m E n examen -> E g z a m e~ rien -> R j e~ entre -> a~ t R pentathlon -> p a~ t a t l o~ sept -> s E t septième -> s E t j E m fer -> f E R cher -> S E R hier -> j E R hiver -> i v E R parler -> p a R l e léger -> l e Z e mesdames -> m e d a m lesquels -> l e k E l desquelles -> d e k E l l il -> i l est -> E ressembler -> R @ s a~ b l e restructurer -> R @ s t R y k t y R e resaisir -> R @ s E z i R resaluer -> R @ s a l y e les -> l e des -> d e tes -> t e mes -> m e ces -> s e ses -> s e fortes -> f O R t dames -> d a m fortes dames -> f O R t @ & d a m et -> e eu -> y peur -> p 9 R tracteurs -> t R a k t 9 R meuble -> m @ b l neuf -> n @ f fieul -> f j @ l jeune -> Z @ n meute -> m 2 t tueuse -> t y 2 z jeu -> Z 2 gueuze -> g 2 z eût -> y jeûne -> Z 2 n exact -> E g z a k t dahomey -> d a O m e ceylan -> s e l a~ asseye -> a s E j nez -> n e mangez -> m a~ Z e chez -> S e je -> Z @ te -> t @ que -> k @ quatre -> k a t R pattes -> p a t montre -> m o~ t R mangeons -> m a~ Z o~ actuellement -> a k t y E l l m a~ guillemets -> g i j m E infect -> e~ f E k t tectonique -> t E k t O n i k avec -> a v E k menue -> m @ n y ambiguë -> a~ b i g y citroën -> s i t R O E n noël -> n O E l été -> e t e règle -> R E g l fête -> f E t f -> E f affaire -> a f E R feu -> f 2 g -> Z e suggérer -> s y g Z e R e suggestif -> s y g Z E s t i f agglomérer -> a g l O m e R e craignions -> k R E n j o~ châtaignier -> S a t E n j e agneau -> a n j o vingt -> v e~ doigts -> d w a vingtaine -> v e~ t E n quatre-vingts ans -> k a t R @ & v e~ z & a~ quatre-vingt-un -> k a t R @ & v e~ & 9~ 81 -> k a t R @ & v e~ & 9~ 80 ans -> k a t R @ & v e~ z & a~ 81 ans -> k a t R @ & v e~ & 9~ n & a~ 88 ans -> k a t R @ & v e~ & H i t _ a~ 90 ans -> k a t R @ & v e~ & d i z & a~ 91 ans -> k a t R @ & v e~ & o~ z _ a~ 98 ans -> k a t R @ & v e~ & d i z & H i t _ a~ 99 ans -> k a t R @ & v e~ & d i z & n @ v & a~ 100 ans -> s a~ t & a~ 200 ans -> d 2 _ s a~ z & a~ 201 ans -> d 2 _ s a~ _ 9~ n & a~ doigté -> d w a t e aiguillage -> E g y i j a Z linguiste -> l e~ g y i s t langage -> l a~ g a Z sang -> s a~ grog -> g R O g gag -> g a g goulag -> g u l a g congé -> k o~ Z e George -> Z O R Z h -> a S p -> p e d -> d e d'huitre -> d H i t R aujourd'hui -> o Z u R d H i d'hôte -> d o t humeur -> y m 9 R ahuri -> a y R i illégal -> i l l e g a l mille -> m i l village -> v i l a Z cueillir -> k 9 j i R caillou -> k a j u famille -> f a m i j bail -> b a j deuil -> d @ j immaculé -> i m m a k y l e Karim -> k a R i m timbre -> t e~ b R parking -> p a R k i N inhumain -> i n y m e~ distinct -> d i s t e~ innombrable -> i n o~ b R a b l vin -> v e~ vingt -> v e~ parties -> p a R t i fermier -> f E R m j e portier -> p O R t j e patio -> p a s j o renier -> R @ n j e cri -> k R i abîme -> a b i m vînimes -> v i n i m coïncider -> k O e~ s i d e aïeul -> a j @ l ambiguïté -> a~ b i g y i t e j -> Z i adjoint -> a d Z w e~ joujoux -> Z u Z u k -> k a képi -> k e p i l -> E l aller -> a l e Renault -> R @ n o lit -> l i m -> E m pomme -> p O m monsieur -> m @ s j 2 film -> f i l m n -> E n parking -> p a R k i N meeting -> m i t i N année -> a n e panne -> p a n une -> y n niño -> n i N i o escroc -> E s k R o cochon -> k o S o~ moelleux -> m w a l 2 oesophage -> 2 z O f a Z soeur -> s 9 R oeuf -> @ f coin -> k w e~ poil -> p w a l poêle -> p w E l boîte -> b w a t comme -> k O m vélodrome -> v e l O d R o m bombe -> b o~ b www.web.com -> d u b l @ v e _ d u b l @ v e _ d u b l @ v e _ p w e~ _ w E b _ p w e~ _ k O m mon -> m o~ bonne -> b O n amazone -> a m a z o n alcool -> a l k O l zoo -> z o pool -> p u l galops -> g a l o salop -> s a l o sirop -> s i R o trop -> t R o gros -> g R o dos -> d o Prévost -> p R e v o poser -> p o z e mot -> m o dépots -> d e p o boum -> b u m toundra -> t u n d R a loups -> l u beaucoup -> b o k u hibou -> i b u brouillard -> b R u i j a R où -> u coûter -> k u t e noyer -> n w a j e voyelles -> v w a j E l l roy -> R w a berlioz -> b E R l j o z zorro -> z O R o zoo -> z o allégro -> a l e g R o sobre -> s O b R notions -> n O s j o~ émotions -> e m O s j o~ rôt -> R o cône -> k o n angström -> a~ g s t R O m p -> p e corps -> k O R temps -> t a~ champs -> S a~ camp -> k a~ contrechamp -> k o~ t R @ S a~ draps -> d R a sparadrap -> s p a R a d R a baptiser -> b a t i z e compte -> k o~ t prompt -> p R o~ exempt -> E g z a~ phrase -> f R a z appliquer -> a p l i k e pas -> p a q -> k y qu'il -> k i l quatre -> k a t R cinq -> s e~ k cent -> s a~ coq -> k O k r -> E R surréaliste -> s y R R e a l i s t courrai -> k u R R E erreur -> E R 9 R rien -> R j e~ s -> E s s'amène -> s a m E n schizophrène -> s k i z O f R E n schéma -> S e m a déshabiller -> d e z a b i j e shérif -> S e R i f assez -> a s e baiser -> b E z e bus -> b y s nimbus -> n e~ b y s écus -> e k y focus -> f O k y s phallus -> f a l y s cumulus -> k y m y l y s minus -> m i n y s stratus -> s t R a t y s cactus -> k a k t y s motus -> m O t y s cas -> k a dos -> d o pas -> p a vus -> v y ils -> i l pis -> p i sens -> s a~ s mars -> m a R s à -> a tous -> t u s tous les -> t u _ l e pour -> p u R tous -> t u s à -> a tous -> t u s les -> l e jours -> Z u R pour -> p u R grands -> g R a~ mesdames -> m e d a m objets -> O b Z E sbire -> z b i R verser -> v E R s e sien -> s j e~ t -> t e t'amène -> t a m E n attitude -> a t i t y d asthme -> a s m huit -> H i t août -> u t tien -> t j e~ tiers -> t j E R tertiaire -> t E R s j E R initiation -> i n i s j a s j o~ partiel -> p a R s j E l martien -> m a R s j e~ vénitienne -> v e n i s j E n patiemment -> p a s j a m a~ minutie -> m i n y s i inertie -> i n E R s i fort -> f O R chats -> S a eût -> y peut -> p 2 point -> p w e~ test -> t E s t script -> s k R i p t bataille -> b a t a j orgueilleux -> O R g 9 j 2 orgueil -> O R g 9 j album -> a l b O m humble -> 9~ b l un -> 9~ emprunt -> a~ p R 9~ fatigue -> f a t i g huitre -> H i t R nuit -> n H i huile -> H i l cruel -> k R y E l nuage -> n y a Z brut -> b R y t fûtes -> f y t v -> v e cave -> k a v w -> d u b l @ v e watt -> w a t x -> i k s exsuder -> E k s y d e exagérer -> E g z a Z e R e exemple -> E g z a~ p l exhumer -> E g z y m e voix -> v w a paix -> p E prix -> p R i soixante -> s w a s a~ t faux -> f o toux -> t u beaux -> b o foux -> f u jeux -> Z 2 auxquels -> o k E l dixième -> d i z j E m six -> s i s dix -> d i s lexique -> l E k s i k lexicaux -> l E k s i k o vox -> v O k s gymnase -> Z i m n a z tympan -> t e~ p a~ laryngite -> l a R e~ Z i t cryogénique -> k R i O Z e n i k myope -> m i O p z -> z E d razzia -> R a z j a tzigane -> t s i g a n zéro -> z e R o cent -> s a~ onze -> o~ z long -> l o~ devrait -> d @ v R E souvent -> s u v a~ derniers -> d E R n j e expérience -> E k s p e R j a~ s redevenir -> R @ d @ v @ n i R dessus -> d @ s y sûrement -> s y R m a~ rapidement -> R a p i d m a~ retracer -> R @ t R a s e sous-ensemble -> s u z & a~ s a~ b l doc -> d O k peut être -> p 2 _ E t R peut-être -> p 2 _ t E t R nom -> n o~ jeunes interprètes -> Z @ n z & e~ t E R p R E t vous éblouiront -> v u z & e b l u i R o~ ok -> o k e travers -> t R a v E R mis en -> m i z & a~ je lis beaucoup -> Z @ _ l i _ b o k u un avion orange -> 9~ n & a v j o~ _ O R a~ Z internet -> e~ t E R n E t net.com -> n E t _ p w e~ _ k O m document -> d O k y m a~ argument -> a R g y m a~ absolument -> a b s O l y m a~ présument -> p R e z y m fument -> f y m trépieds -> t R e p j e Piedmont -> p j e m o~ devrait -> d @ v R E rechercher -> R @ S E R S e psychologies -> p s i k O l O Z i stand -> s t a~ d end -> E n d goût -> g u des hommes -> d e z & O m transition -> t R a~ z i s j o~ transaction -> t R a~ z a k s j o~ transmission -> t R a~ s m i s j o~ restriction -> R E s t R i k s j o~ entend -> a~ t a~ comprend -> k o~ p R a~ quand -> k a~ incompétent -> e~ k o~ p e t a~ racontent -> R a k o~ t mécontent -> m e k o~ t a~ vraisemblable -> v R E s a~ b l a b l subsister -> s y b z i s t e subside -> s y b s i d omni -> O m n i paiement -> p E m a~ donc -> d o~ k juillet -> Z H i j E billet -> b i j E Desjardins -> d e Z a R d e~ Deshormeaux -> d e z O R m o leclerc -> l @ k l E R Marc -> m a R k tabac -> t a b a caoutchouc -> k a u t S u techno -> t E k n o synchro -> s e~ k R o Schtroumpfs -> S t R u m p f mono -> m o n o client -> k l j a~ reclus -> R @ k l y monocorde -> m o n o k O R d bienvenue -> b j e~ v @ n y récent -> R e s a~ Vincent -> v e~ s a~ sous-jacent -> s u _ Z a s a~ présent -> p R e z a~ non un -> n o~ _ 9~ quelqu'un avait -> k E l k 9~ _ a v E cet -> s E t cet équipement -> s E t _ e k i p m a~ dans un -> d a~ z & 9~ bons outil -> b o~ z & u t i bons homes -> b o~ z & O m sauvegarde -> s o v g a R d exactement -> E g z a k t @ m a~ brusquement -> b R y s k @ m a~ évidemment -> e v i d a m a~ bonheur -> b O n 9 R différent -> d i f e R a~ élément -> e l e m a~ a-t-il -> a _ t i l mange-t-on -> m a~ Z _ t o~ mangent-il -> m a~ Z _ t i l vont-elles -> v o~ _ t E l l avait-on -> a v E _ t o~ lecture -> l E k t y R second empire -> s @ g o~ t & a~ p i R bang -> b a~ g Santiago -> s a~ t j a g o option -> O p s j o~ attention -> a t a~ s j o~ fonction -> f o~ k s j o~ détail -> d e t a j détails -> d e t a j deuxième -> d 2 z j E m passeport -> p a s p O R plus haut -> p l y - o les herbes -> l e z & E R b arbres en -> a R b R z & a~ plus avant -> p l y z & a v a~ 9 enfants -> n @ f _ a~ f a~ 9 amis -> n @ f _ a m i 9 ans -> n @ v & a~ 9 heures -> n @ v & @ R les uns les autres -> l e z & 9~ _ l e z & o t R pour tous -> p u R _ t u s tous vos -> t u _ v o tous leurs -> t u _ l 9 R chanson -> S a~ s o~ profitez-en -> p R O f i t e z & a~ grand ami -> g R a~ t & a m i grand homme -> g R a~ t & O m Jésus -> Z e z y tous ceux -> t u _ s 2 fils -> f i s le président -> l @ _ p R e z i d a~ état -> e t a entreprise -> a~ t R @ p R i z danser -> d a~ s e consciente -> k o~ s j a~ t blanc -> b l a~ bientôt -> b j e~ t o Mesnil -> m e n i l torche -> t O R S matchtab -> m a t S t a b envers -> a~ v E R orchidée -> O R k i d e psychique -> p s i S i k débutions -> d e b y t j o~ balbutiements -> b a l b y s i m a~ remerciement -> R @ m E R s i m a~ il s'agit -> i l _ s a Z i présentement -> p R e z a~ t m a~ parfum -> p a R f 9~ parfums -> p a R f 9~ parfumé -> p a R f y m e clefs -> k l e oignons -> O n j o~ St-Laurent -> s e~ _ l o R a~ accident -> a k s i d a~ incident -> e~ s i d a~ occident -> O k s i d a~ décident -> d e s i d cicero-0.7.2/speed.py0000755000076400007640000000156611026545563013132 0ustar niconico#!/usr/bin/python # -*- coding: utf-8 # This file is part of Cicero TTS. # Cicero TTS: A Small, Fast and Free Text-To-Speech Engine. # Copyright (C) 2003-2008 Nicolas Pitre # Copyright (C) 2003-2008 Stéphane Doyon # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2. # See the accompanying COPYING file for more details. # # This program comes with ABSOLUTELY NO WARRANTY. # Simplistic phonetization speed benchmark f = open('top10000fr.txt','r') lines = f.readlines() # first 30 words. Simulates a 15word sentence. lines = lines[:30] txt = ' '.join([l.strip() for l in lines]) import ttp import time t = time.time() # total time for 300 repeats for i in xrange(600): out, indexes = ttp.process(txt) t = time.time() -t print 'took %fs' % t cicero-0.7.2/mbrola_prog.py0000644000076400007640000001341111026545563014322 0ustar niconico# -*- coding: utf-8 # This file is part of Cicero TTS. # Cicero TTS: A Small, Fast and Free Text-To-Speech Engine. # Copyright (C) 2003-2008 Nicolas Pitre # Copyright (C) 2003-2008 Stéphane Doyon # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2. # See the accompanying COPYING file for more details. # # This program comes with ABSOLUTELY NO WARRANTY. # This module wraps up the details of managing a pipe to the MBROLA executable. import os, fcntl, signal, popen2, struct, time from select import select from profiling import * import tracing def trace(msg): mod = 'mbrola_prog' tracing.trace(mod+': '+msg) import config class MbrolaError(Exception): pass class Mbrola: def __init__(self): if not os.access(config.mbrola_prog_path, os.X_OK): raise MbrolaError('mbrola program path <%s> not executable' % config.mbrola_prog_path) if not os.access(config.mbrola_voice, os.R_OK): raise MbrolaError('mbrola voice path <%s> not readable' % config.mbrola_voice) cmd = '%s -e -f %g %s - -.wav' \ % (config.mbrola_prog_path, config.mbrola_f, config.mbrola_voice) trace('mbrola cmd is <%s>' % cmd) self.p = popen2.Popen3(cmd, 1, 0) fcntl.fcntl(self.p.fromchild, fcntl.F_SETFL, os.O_NONBLOCK) fcntl.fcntl(self.p.childerr, fcntl.F_SETFL, os.O_NONBLOCK) self.p.tochild.write('#\n') self.p.tochild.flush() select([self.p.fromchild], [], [self.p.fromchild], 2.0) header = self.p.fromchild.read(44) self.checkForErrors() self.checkForErrors() # twice try: tag, self.rate = struct.unpack("8x8s8xi16x", header) trace('tag: %s' % tag) if tag != "WAVEfmt " : raise struct.error except struct.error: raise MbrolaError('Got something else than WAVE header ' +'from MBROLA') trace('Voice rate is %d' % self.rate) self.finished = 1 self.estimatedSamples = self.finishFudge = self.producedSamples = 0 self.lastErr = '' self.lastErrTime = 0 def voiceRate(self): """Returns MBROLA voice's sampling rate""" return self.rate def say(self, str, dur, expand=config.mbrola_t): self.profMonTotal = ProfMonitor('mbrola_prog.total') self.profMonInitOut = ProfMonitor('mbrola_prog.initialOutput') #trace('Send to mbrola: <\n%s\n>' % str) self.p.tochild.write(';;T=%g\n' % expand) self.p.tochild.write(str) self.p.tochild.flush() self.finished = 0 self.producedSamples = 0 self.estimatedSamples = dur *self.rate /1000 self.finishFudge = (192 +.00015*self.estimatedSamples) /expand trace('estimatedSamples %d, finishFudge %d' % (self.estimatedSamples, self.finishFudge)) def isFinished(self): return self.finished def reset(self): trace('resetting mbrola') if not self.finished: trace('kill USR1 mbrola') os.kill(self.p.pid, signal.SIGUSR1) self.p.tochild.write('#\n') self.p.tochild.flush() self.get() self.finished = 1 self.estimatedSamples = self.producedSamples = 0 def checkForErrors(self): try: s = self.p.childerr.read() except IOError, x: if x.errno == 11: return raise if s: s = s.strip() self.lastErr = s self.lastErrTime = time.time() trace('MBROLA stderr: <%s>' % s) else: # EOF on stderr, assume mbrola died. pid, sts = os.waitpid(self.p.pid, os.WNOHANG) if pid == 0: s = 'mbrola closed stderr and did not exit' else: if os.WIFSIGNALED(sts): sig = os.WTERMSIG(sts) for k,v in signal.__dict__.iteritems(): if k.startswith('SIG') and v == sig: signame = k break else: signame = '%d' % sig s = 'mbrola died by uncaught signal %s' %signame elif os.WIFEXITED(sts): s = 'mbrola exited with status %d' %os.WEXITSTATUS(sts) else: s = 'mbrola died and wait status is weird' if os.WCOREDUMP(sts): s += ', dumped core' trace(s) if self.lastErr and time.time() -self.lastErrTime <1.0: s += ', with error "%s"' % self.lastErr raise MbrolaError(s) def selectfd(self): return self.p.fromchild def get(self): self.checkForErrors() try: sound = self.p.fromchild.read() except IOError, x: if x.errno == 11: return '', 0 raise if self.finished: trace('Dropping %d extra MBROLA samples beyond estimated size' % (len(sound)/2)) return '', 0 if self.profMonInitOut: ~self.profMonInitOut self.profMonInitOut = None self.producedSamples += len(sound)/2 trace('Produced %d more samples, now %d' % (len(sound)/2, self.producedSamples)) if self.producedSamples > self.estimatedSamples -self.finishFudge: trace('Assume finished') self.finished = 1 nsamples = self.producedSamples ~self.profMonTotal else: nsamples = 0 return sound, nsamples cicero-0.7.2/main.py0000644000076400007640000001025211026545563012743 0ustar niconico# -*- coding: utf-8 # This file is part of Cicero TTS. # Cicero TTS: A Small, Fast and Free Text-To-Speech Engine. # Copyright (C) 2003-2008 Nicolas Pitre # Copyright (C) 2003-2008 Stéphane Doyon # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2. # See the accompanying COPYING file for more details. # # This program comes with ABSOLUTELY NO WARRANTY. # This module ties everything together. It handles the main loop and # communication between components. # profiling from profiling import * m = ProfMonitor('main.import') from select import select import phonetizer, mbrola_prog, sndoutput, version, config import tracing def trace(msg): mod = 'main' tracing.trace(mod+': '+msg) ~m class SpeechServ: def __init__(self, appFeedClass): self.appfeed = appFeedClass() self.phozer = None self.mbrola = mbrola_prog.Mbrola() self.samplingRate = self.mbrola.voiceRate() self.expand = config.mbrola_t self.sndoutput = sndoutput.SndOutput(self.samplingRate) def roll(self): wait = self.sndoutput.inputSleepTime() if wait: trace('select ignoring mbrola') fds = [self.appfeed.selectfd()] if self.phozer: wait = min(wait, 0.15) m = ProfMonitor('main.delibWait') r,w,x = select(fds, [], fds, wait) ~m else: trace('selecting') fds = [self.appfeed.selectfd(), self.mbrola.selectfd()] if self.phozer: t = 0.15 else: t = None r,w,x = select(fds, [], fds, t) fds_desc = { self.appfeed.selectfd(): 'appfeed', self.mbrola.selectfd(): 'mbrola'} trace('selected: [%s]' % ','.join([fds_desc[f] for f in r+x])) while self.appfeed.selectfd() in r+x: action,input = self.appfeed.handle() if action is 'M': trace('resetting') self.phozer = None self.mbrola.reset() self.sndoutput.reset() elif action is 'S': trace('new utterance: <%s>' % input) if not self.phozer: trace('new phozer') self.phozer = phonetizer.Phonetizer(self.samplingRate) self.phozer.feed(input) wait = 0 elif action is 'T': self.expand = input if not self.appfeed.gotMore(): break if self.phozer: spokenSamples = self.sndoutput.spokenPos() inx, finished = self.phozer.index(spokenSamples) if inx is not None: trace('send index %d' % inx) self.appfeed.sendIndex(inx) if finished: trace('phozer says finished') self.phozer = None self.sndoutput.reset() trace(profReport()) if self.mbrola.selectfd() in r+x: trace('Getting from mbrola') sound, nsamples = self.mbrola.get() if sound and self.phozer: trace('passing mbrola output') self.sndoutput.give(sound) if nsamples: trace('mbrola finished') self.phozer.produced(nsamples) if self.phozer.isDone(): trace('phozer tells sndoutput that it\'s got ' 'everything') self.sndoutput.allGiven() if not wait and self.phozer and self.mbrola.isFinished(): trace('Getting phos') phos, dur = self.phozer.get(self.expand) if phos: trace('passing phonemes to mbrola') self.mbrola.say(phos, dur,self.expand) def run(self): self.phozer = phonetizer.Phonetizer(self.samplingRate) # FIXME: this introduces bogus indexes. They're filtered at # the appFeed level but that's not so clean. self.phozer.feed(version.banner) while 1: self.roll() cicero-0.7.2/regress.py0000755000076400007640000000310711026545563013475 0ustar niconico#!/usr/bin/python # -*- coding: utf-8 # This file is part of Cicero TTS. # Cicero TTS: A Small, Fast and Free Text-To-Speech Engine. # Copyright (C) 2003-2008 Nicolas Pitre # Copyright (C) 2003-2008 Stéphane Doyon # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2. # See the accompanying COPYING file for more details. # # This program comes with ABSOLUTELY NO WARRANTY. # Test for regressions in the Text to phoneme engine. import sys, re import setencoding import ttp import config setencoding.stdfilesEncoding() f = file(config.testfile, "r") regressions = 0 checks = 0 # remove coments, extra blanks, end of line, etc. cleanup = re.compile( r"\s+#.*|(? phonemes association entry entry = re.compile( r"^\s*(.+?)\s+\-\>\s+(.+)$" ) for ln,line in enumerate(f): line = line.decode('utf8') line = cleanup.sub("", line) if not line: continue m = entry.match(line) if m: string, pho_list = m.groups() pho_result = ttp.word2phons(string) if pho_list != pho_result: print "Regression found: (line %d) \"%s\"" % (ln+1, string) print "Expected: %s\nObtained: %s\n" % (pho_list, pho_result) regressions += 1 checks += 1 continue sys.stderr.write('%s (%d): syntax error:\n%s\n' % (config.testfile, ln+1, line)) sys.exit(1) print("%d regression%s found in %d checks" % (regressions, regressions > 1 and "s" or "", checks)) cicero-0.7.2/tts_brltty_es.py0000755000076400007640000000137411026545563014730 0ustar niconico#!/usr/bin/python # -*- coding: utf-8 # This file is part of Cicero TTS. # Cicero TTS: A Small, Fast and Free Text-To-Speech Engine. # Copyright (C) 2003-2008 Nicolas Pitre # Copyright (C) 2003-2008 Stéphane Doyon # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2. # See the accompanying COPYING file for more details. # # This program comes with ABSOLUTELY NO WARRANTY. # This is an executable script that will invoke the tts configured to # expect communication using the BRLTTY ExternalSpeech protocol. import app_brltty_es, main if __name__ == "__main__": s = main.SpeechServ(app_brltty_es.AppFeed) s.run() cicero-0.7.2/brltty_es_wrapper.sample0000755000076400007640000000025310542131420016403 0ustar niconico#!/bin/sh # Having a wrapper makes it easy to redirect debugging/tracing output. exec /usr/bin/python \ /home/foo/cicero/tts_brltty_es.py \ 2>> /home/foo/cicero/log cicero-0.7.2/bulktalk.py0000755000076400007640000000461211026545563013636 0ustar niconico#!/usr/bin/python # -*- coding: utf-8 # This file is part of Cicero TTS. # Cicero TTS: A Small, Fast and Free Text-To-Speech Engine. # Copyright (C) 2003-2008 Nicolas Pitre # Copyright (C) 2003-2008 Stéphane Doyon # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2. # See the accompanying COPYING file for more details. # # This program comes with ABSOLUTELY NO WARRANTY. # Takes text as input and either speaks out the audio directly through MBROLA, # or with -o dumps the audio to a file. # NB: The filename is simply passed to MBROLA; MBROLA will choose the format # according to the extension of the requested output file. import sys, os import setencoding import ttp import config import tracing def trace(msg): mod = 'wphons' tracing.trace(mod+': '+msg) if __name__ == "__main__": setencoding.stdfilesEncoding(None,0,0) setencoding.decodeArgs() outf = None verbose = 0 args = sys.argv[1:] while args and args[0][0] == '-': if len(args) >= 2 and args[0] == '-o': outf = args[1] args = args[2:] elif args[0] == '-v': verbose = 1 args = args[1:] else: sys.stderr.write('Usage: %s [ -v ] [ -o ] [ text... ]\n' \ % (sys.argv[0])) sys.stderr.write('( text can also be provided on standard input or interactively)\n') sys.exit(1) if args: text = ' '.join(args) interactive = False else: interactive = sys.stdin.isatty() if interactive: text = sys.stdin.readline() else: text = sys.stdin.read() text = text.decode(setencoding.get_file_encoding(sys.stdin)) while text: phonos = ttp.process(text, verbose)[0] cmd = config.mbrola_prog_path \ + " -f " + str(config.mbrola_f) \ + " -t " + str(config.mbrola_t) \ + " -e " + config.mbrola_voice \ + " - " \ + ( outf or "-.au | sox -t .au - -tossdsp "+config.snd_dev ) pipe = os.popen(cmd, 'w') phonos = phonos.split('\n') phonos.insert(0, "_\t200") phonos.insert(-2, "_\t200") phonos = '\n'.join(phonos) pipe.write(phonos) pipe.flush() pipe.close() if interactive: text = sys.stdin.readline() text = text.decode(setencoding.get_file_encoding(sys.stdin)) else: text = None cicero-0.7.2/app_shell.py0000644000076400007640000000477611026545563014004 0ustar niconico# -*- coding: utf-8 # This file is part of Cicero TTS. # Cicero TTS: A Small, Fast and Free Text-To-Speech Engine. # Copyright (C) 2003-2008 Nicolas Pitre # Copyright (C) 2003-2008 Stéphane Doyon # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2. # See the accompanying COPYING file for more details. # # This program comes with ABSOLUTELY NO WARRANTY. # This module handles a simplisticshell-like interface to TTS. # Text received on stdin is spoken out. Each word is written back # to stdout after it has been spoken. # An empty line causes a shutup/mute command. # EOF causes the tts program to exit. # This interface is meant to be simple, not feature-full. import os, sys, fcntl import setencoding import tracing def trace(msg): mod = 'shell' tracing.trace(mod+': '+msg) class AppFeed: def __init__(self): sys.stdin = os.fdopen(sys.stdin.fileno(), 'r', 0) fcntl.fcntl(sys.stdin, fcntl.F_SETFL, os.O_NONBLOCK) sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0) sys.stderr = os.fdopen(sys.stderr.fileno(), 'w', 0) setencoding.stdfilesEncoding() self.pendingTxt = '' self.processedTxt = '' self.lastInx = 0 def selectfd(self): return sys.stdin def sendIndex(self, inx): n = inx-self.lastInx if n>0 and self.processedTxt: self.lastInx = inx sys.stdout.write(self.processedTxt[:n]) sys.stdout.flush() self.processedTxt = self.processedTxt[n:] if not self.processedTxt: self.lastInx = 0 sys.stdout.write('\n') def handle(self): if self.pendingTxt: input = self.pendingTxt self.pendingTxt = '' else: try: input = sys.stdin.read() except IOError, x: if x.errno == 11: return 'M',None raise if input == '': trace('Exiting on EOF') sys.exit(0) if input[0] == '\n': trace('Got empty line: muting') self.pendingTxt = input[1:] self.processedTxt = '' self.lastInx = 0 sys.stdout.write('\n') return 'M',None self.processedTxt += input return 'S',input def gotMore(self): return not not self.pendingTxt