***********************************************************
Sistema de sntese de fala para portugus
Copyleft (c) Serpro - 2007
*********************************************************** 
Detentor da licena:
SERPRO - SERVIO FEDERAL DE PROCESSAMENTO DE DADOS
BRASIL
Autor: Jos Antonio Borges
Verso 1.0 gerada em junho/2007
***********************************************************
A redistribuio desta pea de programao de computadores  regida pela
LICENA SERPRO LPGL - 2007
 permitido copiar e distribuir copias fiis deste software
e de sua documentao, mas no so permitidas quaisquer
alteraes aos mesmos, sem autorizao expressa do Serpro.
Esta documentao deve ser includa intacta em qualquer redistribuio
deste produto.
***********************************************************
Crditos:
Este sintetizador usa partes do sintetizador DOSVOX do
      NCE/UFRJ, criado por J. A. Borges em 1994
Tradutor de Portugus originalmente criado em 1987 por
      Alexandre Plastino de Carvalho
      Sylvia de Oliveira e Cruz
      Veronica Lourenco de Herval Costa
A concatenao dos difones utiliza o sistema MBROLA,
      CopyRight (C) 1996-2007 - Facult Politechnique de Mons - Blgica
***********************************************************
 
A documentao abaixo est descrita em Delphi, mas pode ser
facilmente convertida para outras linguagens de 32 bits, sendo
trivial sua converso para C,  C++, python e muitas outras.
 
***********************************************************
 
1. Inicializao do sistema de fala
A rotina lianeTTS_open inicializa a base de dados necessria para
a converso de textos para fala.
Declarao:
function lianeTTS_open (mbrola_db,
                        arq_regras, arq_excessoes, arq_abrev,
                        arq_prosodia, arq_listadif: pchar): boolean; 
                stdcall;

Valores default dos parmetros:
    So assumidos os seguintes valores para os parmetros, caso sejam
enviadas "strings" vazias (mas no nulas).
    mbrola_db        =  br4
    arq_regras       =  portug.nrl
    arq_excessoes    =  portug.exc
    arq_abrev        =  portug.abr
    arq_prosodia     =  portug.pro
    arq_listadif     =  portug.dfn
    A base de dados bar4 deve estar registrada no painel de controle 
do sistema MBrola (localizado no painel de controle do Windows).
Caso ela no esteja registrada,  buscada em c:\winvox\lianetts\br4
    So assumidos a velocidade 60 e o pitch rate de 50.
 
***********************************************************
 
2. Escolha do arquivo de sada da sntese de voz
Declarao:
procedure lianeTTS_setOutputFile (filename: pchar); stdcall;
Valores default dos parmetros:
Se filename for fornecido como uma cadeia vazia (''), no nula,
ser assumida a placa de som principal do computador como sada.
 
***********************************************************
 
3. Configurao da velocidade e tonalidade
Declarao:
procedure lianeTTS_config (speed, pitch: integer); stdcall;
Os valores fornecidos devem estar entre 0 e 100.
 
***********************************************************
 
4. Fechamento do sistema de sntese e desalocao da biblioteca
contida na memria.
Declarao:
procedure lianeTTS_close; stdcall;
 
***********************************************************
5. Cancelamento da fala em execuo
Declarao:
procedure lianeTTS_stop; stdcall;
 
***********************************************************
6. Pedido de fala
Declarao:
function lianeTTS_speak (toSpeak: pchar): boolean; stdcall;
A fala  realizada assincronamente.
Um novo pedido de fala cancela automaticamente um pedido anteriormente
no concludo.
 
***********************************************************
7. Pedido de fala para texto em UTF-8
Declarao:
function lianeTTS_utfSpeak (toSpeak: pchar): boolean; stdcall;
Idntico  funo lianeTTS_speak, sendo o texto representado na
codificao UTF-8
 
***********************************************************
 
8. Verificao se o sintetizador est falando
Declarao:
function lianeTTS_isSpeaking: boolean; stdcall;
A rotina retorna o valor TRUE caso alguma sntese esteja sendo executada.
 
***********************************************************
 
9. Espera a sntese atual terminar
Declarao:
procedure lianeTTS_wait; stdcall;
Se no houver sntese em andamento, a rotina retorna imediatamente.
 
***********************************************************

10. Uso de callback
 possvel chamar uma rotina para indicar o momento em que
uma fala terminou.
Declarao:
procedure lianeTTS_prepareCallback (rotCallback);  stdcall;
onde rotCallback  uma procedure comum, sem parmetros.

Caso necessrio  possvel interromper este processo de callback.
Declarao:
procedure lianeTTS_killCallback;  stdcall;


Importante:
A biblioteca mbrola.dll deve ser colocada no mesmo diretrio de execuo
do programa que fizer uso desta biblioteca.   possvel tambm usar uma
verso oriunda do projeto Mbrola, instalado no computador antes de que este
software possa ser utilizado.
