U N I V E R S I D A D E DE S Ã O P A U L O
Escola de Artes, Ciências e Humanidades
Bacharelado em Sistemas de Informação
Suporte para Fonemas do Português
Brasileiro no Sintetizador de Voz Festival
Ivanir Rogério Stern
Monografia apresentada à Escola de Artes,
Ciências e Humanidades da Universidade de São
Paulo como parte dos requisitos exigidos na disciplina ACH2018 – Projeto Supervisionado ou
de Graduação II, do curso de Bacharelado em
Sistemas de Informação.
São Paulo, novembro de 2009
Universidade de São Paulo
Escola de Artes, Ciências e Humanidades
Suporte para Fonemas do Português
Brasileiro no Sintetizador de Voz Festival
Ivanir Rogério Stern
Orientação
Prof. Dr. Fernando Auil
Banca Examinadora
Profa . Dra . Ariane Machado Lima
Prof. Dr. Luciano Antonio Digiampietri
São Paulo, novembro de 2009
Resumo
O aumento significativo do uso da informática é bastante perceptı́vel nos dias atuais. Porém,
o mesmo está longe da realidade no que diz respeito à democratização do acesso a essa tecnologia.
Este trabalho procura contribuir na melhoria desse processo, acrescentando uma nova
funcionalidade em uma ferramenta auxiliar para a inclusão digital de portadores de necessidades especiais e que precisam de condições especı́ficas no uso da tecnologia para o acesso à
informação.
Sintetizadores de voz permitem traduzir textos para voz através do uso de computadores,
melhorando a interação humano-computador. Nesse trabalho, deseja-se estudar e compilar
o sintetizador de voz Festival, que apresenta suporte a vários idiomas, porém em sua forma
nativa não contempla o português brasileiro. Para isso, o código dos fonemas deverá ser
incorporado e o mesmo recompilado a partir do zero.
Palavras Chaves: Sintetizador de voz, Festival, fonemas em português, necessidades especiais, inclusão digital.
Agradecimentos
Meus agradecimentos sinceros, em primeiro lugar a minha esposa Lourdes, e a meus filhos
Fábio e André que muito me incentivaram durante toda a duração do curso.
Ao meu orientador, Prof. Dr. Fernando Auil, que foi de inestimável ajuda nas pesquisas
sobre o tema.
Ao Prof. Dr. Luciano Antonio Digiampietri que colaborou de forma marcante com idéias
e incentivos.
A André Ricardo, aluno de lingüı́stica da USP, que me auxiliou com a parte de redação
e tradução.
Finalmente, mas não por menor merecimento, a Roberto Lopes de Carvalho, aluno da
EACH-USP, que em vários momentos, com sua amizade e seu constante incentivo, mostroume que tudo é possı́vel, sendo necessário para isso, apenas que cada um de nós seja persistente
o bastante em seus objetivos.
Sumário
1 Introdução
1.1 Inclusão Digital . . . . . . .
1.2 Motivação . . . . . . . . . .
1.3 Objetivos . . . . . . . . . .
1.3.1 Objetivo Geral . . .
1.3.2 Objetivos Especı́ficos
1.4 Metodologia . . . . . . . . .
1.5 Estrutura do Trabalho . . .
.
.
.
.
.
.
.
1
1
2
3
3
3
4
4
2 Sı́ntese da Voz Humana
2.1 Sintetizador de voz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2 Sintetizador LPC Residual . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
5
6
3 Festival
3.1 O Sistema de Sı́ntese de Voz Festival . . . . . . . . . . . . . . . . . . . . . .
3.2 Os Fonemas para o Português do Brasil . . . . . . . . . . . . . . . . . . . . .
11
11
13
4 Compilação
4.1 Código-fonte do Festival . . . . . . . . . . . .
4.2 Sintetizador LPC Residual do CSLU-OGI . .
4.3 Descompactação dos arquivos . . . . . . . . .
4.4 Instalação dos Compiladores Apropriados . . .
4.5 Configuração e Compilação Propriamente Dita
.
.
.
.
.
15
15
16
16
17
17
5 Debianização
5.1 Hierarquia Padrão do Sistema de Arquivos . . . . . . . . . . . . . . . . . . .
5.2 Pacotes Binários do Debian . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.3 Repositórios do Debian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
19
20
23
6 Conclusão
27
A Licença Pública Geral GNU
29
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
x
SUMÁRIO
B Tradução em Português da GPL
47
C Licença do Festival
57
D Licença dos Módulos OGI
61
Lista de Figuras
2.1.1 Funcionamento simplificado de um sistema TTS genérico. . . . . . . . . . . .
2.1.2 Módulo NLP de conversão de um sistema Text-To-Speech genérico. . . . . .
2.1.3 Sintetizador genérico, baseado em concatenação de fonemas. . . . . . . . . .
6
7
8
Glossário
API: Acrônimo de Applicattion Programming Interface (Interface de Programação de Aplicativos). Conjunto de rotinas e padrões de um software para a utilização das suas
funcionalidades por programas aplicativos que desejam usar seus serviços.
código aberto:
R
R
open-source.
código-fonte aberto:
open-source.
CSTR: Acrônimo de Centre for Speech Technology Research. Centro de pesquisas direcionado à tecnologia de sı́ntese de voz da Universidade de Edimburgo na Escócia.
DFSG: Acrônimo de Debian Free Software Guidelines. Conjunto de normas relativas à
disponibilidade do código-fonte e do tipo de licença de aplicativos, utilizadas no projeto Debian para determinar em qual componente do repositório será locado o pacote
binário correspondente.
difone: Encontro consonantal fonético provocado por uma consoante, ou seja, quando esta
representa o som de duas outras. Por exemplo, o som da consoante x na palavra taxi
corresponde a cs.
R
DSP: Acrônimo de Digital Signal Processor (Processador de Sinal Digital). Dispositivo
para o processamento digital dos sinais. Ou seja, trata-se do mecanismo responsável
pela geração do áudio a partir das informações fonéticas recebidas do
NLP.
FHS: Acrônimo de Filesystem Hierarchy Standard, ou Hierarquia Padrão do Sistema de
Arquivos. Conjunto de especificações para a organização da estrutura de diretórios e
locais onde devem ser colocados os diferentes tipos de arquivos em um sistema Unix
ou similar.
fone: Nome dado a cada segmento vocálico ou consonantal que representa um som da fala.
fonema: Menor unidade sonora de uma lı́ngua.
R
R
cóFreeBSD: Acrônimo de Free Berkley Sofware Distribution. Sistema operacional de
Unix, desenvolvido pela Universidade Berkeley da
digo-fonte aberto, similar ao
Califórnia.
xiii
xiv
Glossário
Free Software Foundation: Fundação para o Software Livre, criada por Richard Mattew
Stallman em 1981.
FSF: Acrônimo de
R
Free Software Foundation (Fundação para o Software Livre).
GNU: Embora o termo “gnu” seja utilizado para denominar duas espécies de antı́lope da
famı́lia Bovidae nativas da África (Connochaetes gnou e C. taurinus), no contexto do
presente trabalho, GNU (grafado sempre com maiúsculas) é um acrônimo recursivo
de GNU’s Not Unix (GNU não é
Unix). Trata-se de um projeto desenvolvido
pela
FSF para a implementação de um sistema operacional completo através de
software livre.
R
RR
RR
R
RR
RR
GNU desenvolvidos pela
GNU/Linux: Sistema operacional composto dos aplicativos
Free Software Foundation com a eventual adição de
software livre e/ou
de
código-fonte aberto, usando o
Linux como kernel do sistema.
R
GPL: Acrônimo de General Public License (Licença Pública Geral GNU). Licença de distribuição e uso para software idealizada por Richard Mattew Stallman no final dos anos
GNU da
Free Software Foundation. Trata-se da
80 no âmbito do projeto
software livre. Seu texto completo
licença com maior utilização nos projetos de
é reproduzido no Apêndice A.
grafema: Nome dado à unidade fundamental ou mı́nima de um sistema de escrita.
kernel: Camada de software mais próxima do hardware, sendo responsável por gerenciar
os recursos do sistema computacional como um todo.
R
R
R
Linux: Clone do
kernel do
Unix licenciado sob a
GPL. O Linux foi iniciado
por Linus Torvals a partir de 1991-1992 e conta na atualidade com a colaboração de
milhares de desenvolvedores no mundo inteiro. A marca Linux é propriedade de Linus
Torvals.
LISP: Famı́lia de linguagens de programação concebida por John McCarthy em 1958. Durante as décadas de 1970 e 1980, foi a principal linguagem da comunidade de inteligência
artificial. Seu nome deriva de LISt Processing, onde a lista é a estrutura de dados fundamental desta linguagem e o código-fonte pode ser manipulado como qualquer outro
tipo de dado. Existem diversos dialetos de Lisp, sendo os mais conhecidos o Common
Lisp e o
Scheme.
R
LPC: Acrônimo de Linear Predictive Coding ou Codificação por Predição Linear. Consiste
em um método matemático para realizar estimativas de valores futuros de um sinal
digital, por exemplo, como uma função linear de amostras passadas.
morfema: Menor unidade gramatical que se pode identificar. As palavras, ao contrário do
que pode parecer, não correspondem às menores unidades gramaticais de uma lı́ngua.
Uma palavra como infelicidade, por exemplo, resulta da combinação de três elementos
xv
menores: o prefixo in-, o radical felic- e o sufixo -idade. Cada um desses elementos
corresponde a um morfema.
NLP: Acrônimo de Natural Language Processor (Processador de Linguagem Natural). Dispositivo cuja tarefa consiste em transformar o conteúdo textual em informações fonéticas, ou seja, converte um texto escrito em voz sintetizada que imita a voz humana.
Também conhecido como
TTS.
R
OGI: Acrônimo de Oregon Graduate Institute of Science & Technology.
R
R
open-source: Termo criado pela Open Source Initiative (OSI) que aplica-se de maneira
genérica a qualquer software que respeita basicamente as quatro liberdades definidas
FSF para o
software livre. Contudo, a OSI utiliza o termo sob um
pela
ponto de vista puramente técnico, de maneira proposital, evitando deliberadamente
as questões éticas, direitos e liberdade, que envolvem o discurso da
FSF, mas que
incomodam às empresas.
R
programação funcional: Paradigma de programação que considera a computação como
uma avaliação de funções matemáticas.
programação procedural: Paradigma de programação baseado no conceito de chamadas
a procedimentos, também conhecidos como rotinas, sub-rotinas ou métodos.
prosódia: Estudo do ritmo, entonação e demais atributos correlatos da fala. Descreve
todas as propriedades acústicas da fala que não podem ser preditas pela transcrição
ortográfica.
R
Scheme: Dialeto da linguagem de programação
LISP. Trata-se de uma linguagem
multi-paradigma que suporta programação funcional e procedural. Foi criada por Guy
L. Steele e Gerald Jay Sussman no ano de 1975.
R
software livre: Qualquer programa de computador que pode ser usado, copiado, estudado e
redistribuı́do sem nenhuma restrição, atendendo basicamente aos quatro tipos de liberdades estabelecidos pela
Free Software Foundation, a saber: liberdade para (0)
executar o programa, sem restrição de qualquer propósito; (1) estudar como o programa funciona, e adaptá-lo para necessidades particulares; (2) redistribuir, inclusive
vender, cópias do programa; (3) modificar o programa, e distribuir tais modificações,
de modo que toda a comunidade se beneficie. Observe-se que o acesso ao código-fonte
é um pré-requisito essencial para as liberdades (1) e (3).
Solaris: Sistema operacional baseado no
crosystems e lançado em 1992.
transducer:
R
transdutor.
R
Unix, desenvolvido pela empresa Sun Mi-
xvi
Glossário
transdutor: Dispositivo que recebe um tipo de sinal e o retransmite convertendo para outro
tipo de sinal. Por exemplo, um microfone recebe ondas sonoras e as transforma em
impulsos elétricos.
TTS: Acrônimo de Text-To-Speech. Termo genérico utilizado para o
R
R
NLP.
Unix: Sistema operacional portável, multi-tarefa e multi-usuário originalmente criado por
Ken Thompson, nos Laboratórios Bell (Bell Labs) da AT&T. Nos primórdios tratáva-se
de
software livre, mas logo tornou-se proprietário. Na atualidade, a marca Unix
é propriedade do The Open Group, um consórcio formado por empresas de informática.
Capı́tulo 1
Introdução
1.1
Inclusão Digital
Vivenciamos uma época onde a tecnologia está se desenvolvendo muito velozmente e a necessidade de acesso as informações de maneira rápida e precisa se faz presente a cada momento
e de forma crescente, tornando as pessoas dependentes da tecnologia para executar diversas
atividades do cotidiano.
A preocupação dos governantes com a inclusão digital é notável, dada a criação de centenas de telecentros e infocentros, locais onde a população de baixa renda tem acesso a
computadores conectados à rede para realização de atividades pessoais, escolares e profissionais.
O sistema operacional adotado especificamente pelos telecentros da Prefeitura Municipal
de São Paulo, que atualmente somam aproximadamente 300 unidades, é o GNU/Linux devido à sua licença livre, entre outras vantagens que fogem ao escopo deste trabalho.
Com o passar do tempo, a preocupação com a inclusão digital deixou de ter apenas como
objetivo principal as pessoas carentes e contemplou também as pessoas com necessidades
especiais, que necessitam de condições especı́ficas para ter acesso a estes meios de informação.
A construção de uma sociedade de plena participação e igualdade tem como um
de seus princı́pios a interação efetiva de todos os cidadãos. Nessa perspectiva
é fundamental a construção de polı́ticas de inclusão para o reconhecimento das
diferenças e para desencadear uma revolução conceitual que conceba uma sociedade em que todos devem participar, com direito de igualdade e de acordo
com suas especificidades [7].
Estão sendo criados ao longo dos anos novos telecentros que possibilitam a integração
de portadores de necessidades especiais, possibilitando assim, não somente a inclusão digital como também a inclusão social destas pessoas em uma sociedade informatizada. Nesses
1
2
Introdução
locais é possı́vel encontrar ferramentas especı́ficas para portadores de deficiências visuais,
auditivas e fı́sicas, dentre outras. Esses telecentros utilizam basicamente o sistema operacional Windows devido à escassez de ferramentas análogas para uso no GNU/Linux. Para
deficientes visuais existem máquinas equipadas com programas e acessórios que facilitam o
seu uso, como por exemplo, teclados intellikeys, com teclas grandes e de alta sensibilidade
digital, impressoras em Braille, sintetizadores de voz, lupa eletrônica que funciona com duas
câmeras (uma fixa, colorida, outra móvel, em preto e branco) que permitem a leitura de
textos impressos. A reprodução da imagem captada pelas câmeras é ampliada em escalas
variáveis, facilitando a leitura no monitor.
Segundo Schuck [10], para auxiliar na inclusão digital dos portadores de deficiência visual
existem programas leitores de tela, que lêem o que está escrito na tela e reproduzem sonoramente esses textos. Isso se dá através de um sintetizador de voz, dispositivo que transforma
caracteres em som. É possı́vel ler desde palavras até textos completos. Mas, o uso de sintetizadores de voz em softwares livres, que tornaria mais fácil a inclusão de deficientes visuais,
ainda não é difundido.
A utilização do computador em conjunto com aplicativos dotados de sı́ntese de voz tem
proporcionado independência na realização de atividades que até então só eram possı́veis
através da transcrição para o sistema Braille [4].
Entre os leitores de tela, os mais conhecidos são: o DosVox, o Virtual Vision e o Jaws,
que são voltados para a plataforma Windows. De acordo com Eberlin [4], a difusão do software livre e a migração de programas proprietários para aplicativos de código-fonte aberto
no Brasil são cada vez mais evidentes, mas existe ainda uma barreira para a migração do
usuário deficiente visual brasileiro, pois, até este momento, nenhuma das tecnologias assistivas desenvolvidas para sistemas operacionais livres encontram-se disponı́veis no idioma
português.
Este trabalho pretende apresentar uma alternativa que possibilitará o uso do sintetizador
de voz Festival em softwares livres, como o Gnopernicus, habilitando usuários cegos para realização de tarefas que utilizam o computador e a Internet, e que sem o uso dessas tecnologias
assistivas não seria possı́vel a realização dessas tarefas. O trabalho baseia-se na compilação
do sintetizador de voz Festival junto aos fonemas em português do Brasil.
1.2
Motivação
A dificuldade de acesso ao processo de inclusão digital, existente nos dias atuais é ainda uma
realidade marcante. Apesar dos sensı́veis esforços empreendidos pelas autoridades governamentais, com a criação de telecentros e infocentros no intuito de melhorar isso, uma parte
significativa da sociedade ainda encontra dificuldades enormes em ter acesso às tecnologias
existentes. Isso quando levado para o universo das pessoas portadoras de necessidades es-
1.3 Objetivos
3
peciais ou de algum tipo de deficiência, torna-se ainda pior, pois as ferramentas existentes
para o acesso a informação por parte dessas pessoas são em número reduzido e normalmente
de custo elevado. Habitualmente, as ferramentas encontradas para esse fim, são de uso em
plataforma Windows e produtos não open-source, o que significa dizer que sua utilização,
quase sempre, não é gratuita, restringindo de forma sensı́vel o número de pessoas que podem ter acessos a esse tipo de tecnologia. A possibilidade de disponibilizar uma ferramenta
em plataforma GNU/Linux e de código aberto, que minimize esse problema é a principal
motivação desse trabalho.
1.3
1.3.1
Objetivos
Objetivo Geral
O objetivo geral do presente trabalho consiste no estudo teórico dos princı́pios gerais da
sı́ntese da voz humana, com particular ênfase nos sintetizadores de voz do tipo text-to-speech
(TTS). Como principal exemplo, pode-se citar o Festival, desenvolvido pelo Centre for Speech
Technology Research (CSTR) da Universidade de Edimburgo. O Festival é um projeto de
código-fonte aberto e pode ser distribuı́do livremente desde que seja para fins não-comerciais.
Embora a lı́ngua padrão do Festival seja o inglês, possui também suporte para outros idiomas.
Em complemento ao estudo teórico, objetiva-se a inclusão dos fonemas do português
brasileiro ao Festival, incluindo sua compilação e disponibilização para uso, de quem por ele
se interessar.
Com o desenvolvimento deste projeto espera-se contribuir com a inclusão digital, em particular, dos portadores de deficiência visual no Brasil, já que para plataformas de código-fonte
aberto, a disponibilidade de ferramentas para esse fim são em número bastante reduzido.
1.3.2
Objetivos Especı́ficos
Como objetivos especı́ficos do presente trabalho pode-se citar:
• Estudo teórico sobre os princı́pios da sı́ntese de voz e dos sintetizadores de voz, especialmente do Festival, através da literatura existente nessa área.
• Estudo sobre a implementação de fonemas regionais no Festival.
• Obtenção do código-fonte do Festival, juntamente com o código-fonte correspondente
aos fonemas do português brasileiro e a recompilação do Festival.
• Geração de pacotes binários do Debian com o produto final da compilação, com o
objetivo de facilitar sua distribuição para a comunidade que necessitar e/ou desejar
utilizá-lo.
4
Introdução
• Entrar em contato com um mantenedor do Debian, para uma eventual inclusão dos
pacotes binários gerados no repositório de software dessa distribuição GNU/Linux.
1.4
Metodologia
A metodologia seguida no presente trabalho consistiu basicamente em:
• Estudo teórico sobre os princı́pios da sı́ntese de voz, e sobre a implementação de fonemas regionais do Festival.
• Obtenção do código-fonte do Festival, como também do código-fonte correspondente
aos fonemas do português brasileiro.
• Compilação do código-fonte, acrescentando o suporte para os fonemas do português
brasileiro.
• Estudo dos diferentes tipos de licença sob as quais são distribuı́dos os componentes do
Festival: sintetizador propriamente dito, bibliotecas de programas utilizados, módulos
independentes e os diferentes conjuntos de fonemas.
• Estudo sobre as normas do Debian para a implementação de pacotes binários de software.
• Criação de pacotes binários do Debian, com o produto da compilação, com o objetivo
de possibilitar a sua distribuição a quem possa interessar.
1.5
Estrutura do Trabalho
O presente trabalho consta das seguintes partes:
• O Capı́tulo 1 fornece uma sucinta introdução, junto com uma descrição da motivação,
objetivos, metodologia e estrutura do trabalho.
• Os Capı́tulos 2 e 3 apresentam os principais aspectos teóricos do problema em questão,
introduzindo alguns conceitos e definições básicas.
• O Capı́tulo 4 apresenta o passo a passo do processo de compilação propriamente dito
e exibe a seqüência de operações necessárias para a obtenção do resultado final.
• O Capı́tulo 5 trata basicamente da geração dos pacotes binários do Debian.
• Finalmente, o Capı́tulo 6, discute os resultados obtidos no presente trabalho. Além
disso, discute-se de maneira qualitativa, possı́veis melhorias no processo, como alternativa para direcionar futuras pesquisas sobre o assunto.
• As licenças de uso do software são reproduzidas nos Apêndices A, B, C e D.
Capı́tulo 2
Sı́ntese da Voz Humana
Realmente, seria uma invenção considerável, a de uma máquina capaz
de imitar nossa fala, com seus sons e articulações. Eu acho que isso não é impossı́vel.
Leonhard Euler 1
2.1
Sintetizador de voz
Sı́ntese de voz é o processo de reprodução artificial da voz humana. Um sistema utilizado
para este propósito é denominado sintetizador de voz. Um sistema TTS (Text-To-Speech),
ou texto-voz, converte texto escrito em linguagem natural para voz, permitindo que as pessoas possam ouvi-lo com o uso de um computador. Esse processo é extremamente útil para
pessoas com necessidades especiais, principalmente deficiêntes visuais. Em termos mais precisos, um sintetizador de voz é um sistema computacional capaz de reproduzir um texto
qualquer, em som, ou seja, é um aplicativo capaz de transformar uma entrada de texto em
saı́da de áudio [3].
Segundo Eberlin [4], um sintetizador de voz é composto por dois mecanismos fundamentais: o TTS e o sonorizador. Existem vários tipos de sintetizadores de voz, mas de uma
forma geral, para que o áudio seja gerado a partir de um texto, é necessário que esse texto
seja processado por intermédio de dois mecanismos principais:
• NLP: Natural Language Processor ou Processador de Linguagem Natural.
• DSP: Digital Signal Processor ou Processador de Sinal Digital.
A Figura 2.1.1 mostra o funcionamento simplificado de um sintema TTS genérico. A
figura foi adaptada de [3].
O NLP é o dispositivo responsável pelo processamento de linguagem natural, dispositivo
esse que transforma o conteúdo textual em informações fonéticas, também conhecido como
1
Citado em http://tcts.fpms.ac.be/synthesis/euler.
5
6
Sı́ntese da Voz Humana
Figura 2.1.1: Funcionamento simplificado de um sistema TTS genérico.
TTS do sistema. Este é o mecanismo sintetizador de voz que converte um texto escrito
em voz sintetizada, produzida através de métodos matemáticos que imita a voz humana.
Pode-se até usar algumas sı́labas pré-gravadas para melhorar a qualidade da voz. O módulo
NLP de conversão de um sistema TTS genérico é mostrado na Figura 2.1.2. A figura foi
adaptada de [3].
O DSP é um dispositivo responsável pelo processamento digital de sinais, o que significa
dizer que é ele o responsável pela geração do áudio a partir das informações fonéticas recebidas do NLP. Um sintetizador de voz genérico, baseado em concatenação de fonemas é
mostrado na figura 2.1.3. O bloco acima a esquerda na figura corresponde ao desenvolvimento do sintetizador e isso é processado uma única vez. Os outros blocos variam de acordo
com os parâmetros passados para o programa. Operações especı́ficas da linguagem estão
marcadas com um circulo vermelho. A figura foi adaptada de [3]
Em resumo, segundo Moreno Azcona [11], o NLP se encarrega de produzir uma transcrição fonética do texto lido, além da entonação e do ritmo desejados para a voz de saı́da.
Depois, o DSP transforma a informação simbólica que recebe do NLP na voz de saı́da propriamente dita.
2.2
Sintetizador LPC Residual
LPC é um acrônimo de Linear Predictive Coding, cujo significado em português seria Codificação de Predição Linear. Trata-se de uma ferramenta muito utilizada em processamento
de sinais de áudio e processamento de voz para representar o espectro de um sinal digital de
voz de forma condensada, usando as informações do modelo de predição linear.
A predição linear é uma técnica matemática cujo o objetivo fundamental consiste em
2.2 Sintetizador LPC Residual
7
Figura 2.1.2: Módulo NLP de conversão de um sistema Text-To-Speech genérico.
estimar valores futuros de um sinal digital com base em amostras anteriores através de uma
relação linear entre ambos. Caso os valores estimados tenham alguma relação com os valores
das amostras anteriores e, mais especificamente, caso essa relação seja linear, a estimativa
dos valores futuros com base nos valores anteriores poderá ser feita de maneira relativamente simples e com um certo grau de eficiência. A principal idéia inerente à predição linear
é a extração de redundâncias do sinal obtido, tomando-se como base um procedimento de
subtração entre o valor predito e o valor real. O resultado dessa operação de diferença, é
denominado erro de predição ou resı́duo [1].
Deixando de lado os detalhes técnicos, o LPC assume de maneira simplificada que o sinal
de voz é produzido pela emissão de som no final de um tubo, com adições ocasionais de assobios e estalidos (sons sibilantes ou estalidos como ruı́dos). Embora aparentemente simples,
este modelo consiste na verdade em uma razoável aproximação da produção real da fala.
Com efeito, a glote (o espaço entre as cordas vocais), produz o som, que é caracterizado
pela sua intensidade e freqüência. O trato vocal (garganta e boca) forma o tubo, que se
8
Sı́ntese da Voz Humana
Figura 2.1.3: Sintetizador genérico, baseado em concatenação de fonemas.
caracteriza por suas ressonâncias, que dão origem aos formantes, ou bandas reforçadas de
freqüência no som produzido. Finalmente, os assobios e estalidos são gerados pela ação da
lı́ngua, lábios e garganta durante a geração dos sons, dependendo das caracterı́sticas especificas do tipo de vogal e consoante utilizada (sibilante, nasal, fricativa, etc).
O LPC analisa o sinal de voz através da estimativa dos formantes, removendo os seus
efeitos a partir do sinal de voz, e estima a intensidade e a freqüência do som intrı́nseco. O
processo de remoção dos formantes denomina-se filtragem inversa, e o sinal filtrado assim
modelado, remanescente após a subtração dos formantes, é chamado resı́duo.
Os dados que descrevem a intensidade e a freqüência do som vocálico, os formantes, e
o sinal correspondente ao resı́duo, podem ser armazenados ou transmitidos para qualquer
lugar. O LPC sintetiza o sinal de voz, invertendo o processo: Em primeiro lugar, utiliza os
parâmetros da voz e do resı́duo para criar um sinal fonte; depois serve-se dos formantes para
criar um filtro (que representa o tubo), e introduz o sinal fonte através do filtro, resultando
na fala sintetizada. Como os sinais de voz variam com o tempo, este processo é feito em pe-
2.2 Sintetizador LPC Residual
9
quenos pedaços (curtos) do sinal de fala, que são chamados frames ou quadros, geralmente
numa taxa de 30 a 50 quadros por segundo, o que gera fala inteligı́vel e com boa compreensão.
O Centre for Spoken Language Understanting (CLSU) do Oregon Graduate Institute of
Science and Technology (OGI) desenvolveu um sintetizador LPC residual modular denominado OGIresLPC. A função desse módulo consiste em servir como sintetizador de voz no
Toolkit do próprio CSLU-OGI, mas também pode ser utilizado como sintetizador de voz
alternativo no Sistema de Sı́ntese de Voz Festival.
Capı́tulo 3
Festival
3.1
O Sistema de Sı́ntese de Voz Festival
O Sistema de Sı́ntese de Voz Festival é um sintetizador de voz bastante difundido, originalmente desenvolvido para o idioma inglês, mas com suporte para idiomas estrangeiros.
Pelo fato de tratar-se de um projeto de código-fonte aberto, torna-se perfeitamente viável a
sua adaptação para o idioma português do Brasil. O sucesso obtido por diversas experiências
de adaptação desse programa para outros idiomas, foi um outro fator que favoreceu a sua
escolha para o presente projeto.
O Festival foi desenvolvido a partir de 1996 pela Universidade de Edimburgo, Escócia,
inicialmente para a plataforma Unix e similares (Linux, FreeBSD e Solaris). Existe também
um projeto, ainda em fase de amadurecimento, de portabilidade para a plataforma Windows.
Trata-se de um sintetizador de voz multilingue, com suporte para o inglês britânico e
americano, italiano e espanhol, dentre outros idioma. É um projeto open-source, isto é,
possui seu código- fonte aberto. O método de desenvolvimento open-source é baseado numa
série de princı́pios e práticas para promover o livre acesso a produtos de software. Em
particular, é possı́vel utilizar o Festival sem o pagamento de uma licença de uso. Faculta
também aos usuários o direito de estudarem e modificarem o seu código-fonte para adaptá-lo
a necessidades especı́ficas. Desta maneira, o Festival torna possı́vel uma pesquisa profunda
da natureza de um sintetizador de voz, diferentemente de outras tecnologias voltadas para
outras plataforma proprietárias.
Através da Internet, desenvolvedores de todo o mundo podem reunir seus esforços colaborativos para o desenvolvimento do Festival. Em particular, o Festival conta com uma espécie
de sub-projeto denominado Festvox, criado para auxiliar os desenvolvedores interessados na
extensão do sintetizador para suportar outros idiomas.
Tecnicamente, o Festival apresenta caracterı́sticas importantes, tais como uma estrutura
11
12
Festival
para sı́ntese de vozes e exemplos de vários de seus módulos. Possui um sistema TTS completo
em linguagem C/C++. Além disso, oferece diversas facilidades para novos desenvolvedores,
entre elas:
• Documentação.
• Demonstrações e repositórios com diferentes vozes.
• Conjunto de ferramentas auxiliares na construção de novas vozes sintetizadas nos idiomas suportados, como scripts especı́ficos e bases de dados com exemplos de fala.
• Suporte para sua configuração.
O Festival pode ser usado como um componente de uma aplicação de voz. Para isto
possui um grande número de APIs (Interface de Programação de Aplicativos), ou pode ser
usado simplesmente para sintetizar arquivos de textos de várias maneiras diferentes:
• interativamente, através de um interpretador de comandos, ou shell, próprio, onde
podem ser digitadas as linhas de comando apropriadas;
• de maneira não-interativa, através de scripts ou pela canalização de comandos, ou
pipeline, diretamente no interpretador de comandos padrão do sistema.
Foi a partir da versão 1.4 que o Festival se tornou um software livre para qualquer fim,
seja comercial ou não-comercial. A Universidade de Edimburgo detém os direitos autorais
do Festival e o distribui dentro da licença X11, que permite a reutilização do software licenciado em programas livres ou proprietários. Não há nenhuma restrição para utilizá-lo, mas
algumas vozes, dicionários e ferramentas utilizadas podem ter restrições diferentes.
Sua licença, assim como sua documentação, é livre de encargos para uso e distribuição,
sem restrições, inclusive sem limitações ao direito de usar, copiar, modificar, fundir, publicar,
distribuir, sub-locar, e/ou vender cópias, e permitir que pessoas para quem é fornecido o
façam, desde que atenda as seguintes condições:
• Respeitar e conservar os direitos autorais e o nome dos autores originais.
• Ressaltar corretamente toda alteração feita.
• Não utilizar o nome dos autores para promover produtos derivados do Festival.
Para maiores detalhes sobre a licença de uso do Festival consulte o Apêndice C.
3.2 Os Fonemas para o Português do Brasil
3.2
13
Os Fonemas para o Português do Brasil
O conjunto de fonemas correspondentes ao português brasileiro vieram à luz sob o projeto de
pesquisa Spoltech, desenvolvido pelos departamentos de Informática e de Letras da UFRGS
conjuntamente com o CSLU-OGI.
O objetivo do mencionado projeto consistia em desenvolver a sı́ntese e reconhecimento automático de fala para o Português do Brasil aplicando os resultados na ferramenta chamada
CSLU Toolkit.
Os fonemas foram desenvolvidos por uma equipe que contava com a participação dos
seguintes integrantes:
• Maurı́cio Schramm Chaplin, com o auxı́lio de Adriano Zanuz, este último mestrando
em Ciência da Computação no perı́odo em questão.
• Luı́s Felipe Rhoden Freitas, graduando em Letras no perı́odo em questão.
• Profa. Gisela Colischon, do Departamento de Letras da UFRGS.
• John-Paul Hosom e Mike Macon, da OGI.
A equipe contou com a orientação do Prof. Dante Barone, também responsável pelo
projeto de pesquisa Spoltech.
O trabalho do grupo consistiu em:
• Fazer um levantamento dos fonemas, em particular, dos difones, tipicamente usados
na lı́ngua portuguesa falada no Brasil.
• Desenvolver um conjunto de regras, usando a linguagem Scheme, para mapear texto
escrito para os fonemas/difones representados pelo mesmo.
• Coletar amostras de voz contendo todos os difones necessários.
• Processar esses difones num formato de biblioteca de difones que pudesse ser utilizada
pelo Festival.
• Integrar o resultado de tudo isso ao CSLU Toolkit.
Os fonemas são open-source, isto é, possuem seu código-fonte aberto, assim como o Festival. Para poder usá-los é necessário recompilar o Festival junto a eles, utilizando módulos
da OGI, que têm uma licença restrita para uso não-comercial.
Até onde chega o nosso conhecimento, os fonemas não estão disponı́veis para download
na Internet. No presente caso, foram obtidos diretamente entrando em contato com os
desenvolvedores através de meios eletrônicos.
Capı́tulo 4
Compilação
No trabalho de compilação foi utilizado um sistema operacional GNU/Linux. Mas precisamente, a distribuição Debian versão 5.0.1 lenny, com o kernel Linux da série 2.6.26. A seguir
encontra-se todo o detalhamento de cada etapa.
4.1
Código-fonte do Festival
O Festival é desenvolvido basicamente em C++ e Scheme. O código- fonte é distribuı́do em
archives comprimidos com o programa gzip, isto é, em arquivos .tar.gz.
Foi utilizada a versão 1.95-beta, lançada em julho de 2004. Os arquivos estão disponı́veis
no site do CSTR1 da Universidade de Edimburgo:
http://www.cstr.ed.ac.uk/downloads/festival/1.95
A versão 1.95-beta do Festival requer o download dos seguintes archives:
• festival-1.95-beta.tar Neste archive encontra-se o núcleo do Sistema de Sı́ntese de
Voz Festival, além de exemplos, documentação, bibliotecas, arquivos de configuração,
entre outros.
• festlex_CMU.tar Possui um dicionário de fonemas em inglês americano e um documento com as regras de som baseadas no CMUDICT 0.4. Essa distribuição incide sobre
uma licença livre sem restrições comerciais.
• festlex_OALD.tar Contém um dicionário do inglês britânico e um documento com as
regras de som derivadas do Oxford Advanced Learners’ Dictionary of Current English,
restrito somente para uso não comercial.
1
Centre for Speech Technology Research.
15
16
Compilação
• festlex_POSLEX.tar Contém um dicionário, wsj.wp39.poslexR, e também um ngrama, wsj.wp39.tri.ngrambin, para a identificação da voz inglesa.
• festvox_kallpc16k.tar Sintetizador de difones correspondentes ao inglês americano.
• festvox_kedlpc16k.tar Sintetizador de difones correspondentes ao inglês americano.
No caso do idioma inglês, os difones foram divididos em duas partes que são os dois
archives aqui descritos.
• festvox_rablpc16k.tar Sintetizador de difones correspondentes ao inglês britânico.
• speech_tools-1.2.95-beta.tar Biblioteca de ferramentas de voz de Edimburgo.
Consiste numa coleção de classes C++, funções e programas relacionados com a manipulação de todo tipo de objetos utilizados para o processamento da voz. Inclui
suporte para a leitura e escrita de formas de onda e arquivos de diversos formatos, e
também permite a conversão entre tipos.
4.2
Sintetizador LPC Residual do CSLU-OGI
Para a compilação do código-fonte do Festival com suporte aos fonemas do português brasileiro
foi necessário também fazer o download de algumas ferramentas do CSLU-OGI, que são
distribuı́das sob uma licença não-livre. Trata-se basicamente de uma licença para uso nãocomercial: a distribuição e uso gratuitos são permitidos apenas para fins acadêmicos, pessoais, pesquisa e/ou testes de desempenho; qualquer outra utilização é considerada comercial.
Para os detalhes, vide o texto completo da licença no Apêndice D.
A ferramenta em questão é um sintetizador LPC residual desenvolvido pelo CSLU-OGI
de maneira modular. A função desse módulo consiste em servir como sintetizador LPC no
CSLU Toolkit da própria OGI, mas pode ser aproveitado também em outros projetos. Em
particular, pode ser usado como sintetizador LPC alternativo no Festival.
O sintetizador LPC residual do CSLU-OGI não é incluso por padrão com o Sistema de
Sı́ntese de Voz Festival distribuı́do pela CSTR da Universidade de Edimburgo. Este módulo
da OGI deve ser obtido no site do CSLU-OGI:
http://www.cslu.ogi.edu/tts/download/data
através do download do archive OGIresLPC-2.0.7.tar.gz. Como no caso do Festival, o
módulo LPC da OGI é desenvolvido em C++ e Scheme.
4.3
Descompactação dos arquivos
Criamos o novo diretório tts para armazenar os arquivos. Todos os arquivos baixados
e requeridos devem estar obrigatoriamente armazenados no mesmo diretório para serem
4.4 Instalação dos Compiladores Apropriados
17
descompactados. Fizemos a descompactação de todos os arquivos dentro deste diretório
através do comando:
tar -C tts -xzvf /caminho/arquivos/festival/arquivo.tar.gz
O archive correspondente ao módulo LPC da OGI deve ser descompactado no mesmo diretório em que o Festival.
4.4
Instalação dos Compiladores Apropriados
Para compilar o Festival na plataforma Unix ou similares é necessário um compilador C++.
Contudo, a versão 1.95-beta do Festival é incompatı́vel com versões do g++ superiores a 3.x,
comuns nos sistemas modernos. Por causa disso, é necessário a instalação dos compiladores
C e C++ correspondentes à versão 2.95, o que nos sistemas Debian e similares pode ser feito
através dos comandos:
apt-get install gcc-2.95
apt-get install g++-2.95
Uma maneira de fazer com que esses compiladores sejam usados por padrão, consiste em
mudar os links simbólicos /usr/bin/gcc e /usr/bin/g++ de maneira conveniente:
cd
rm
ln
rm
ln
4.5
/usr/bin
gcc
-s gcc-2.95 gcc
g++
-s g++-2.95 g++
Configuração e Compilação Propriamente Dita
Para que o módulo LPC da OGI seja compilado no Festival, devem ser acrescidas no arquivo
festival/config/config.in as seguintes linhas:
ALSO_INCLUDE += OGIcommon
ALSO_INCLUDE += OGIdbase
ALSO_INCLUDE += OGIresLPC
Para a compilação do Festival com os fonemas em português do Brasil, foi utilizado o
make do projeto GNU, que é uma ferramenta auxiliar na construção de aplicativos complexos. O make rastreia os arquivos do código-fonte necessários, como também seus arquivos
subsidiários, ou dependências, e compila esses arquivos, junto com suas dependências, se
modificações recentes forem detectadas.
18
Compilação
O make utiliza como guia arquivos chamados genericamente makefiles, onde são detalhadas as informações necessárias para a compilação do código-fonte, incluindo as configurações particulares do sistema operacional utilizado.
A utilização do make pode ser resumida da seguinte maneira:
• Executar o comando configure para detectar a configuração do sistema. Este passo
é opcional.
• Executar o comando make para compilar o código.
No presente caso, utilizamos primeiramente o make nas ferramentas de voz:
cd /tts/speech tools
./configure
make
Em seguida, fazemos o mesmo com o Festival propriamente dito:
cd /tts/festival
./configure
make
Capı́tulo 5
Debianização
5.1
Hierarquia Padrão do Sistema de Arquivos
Para integrar os programas compilados num sistema Unix ou similar é necessário colocar os
“arquivos convenientes” nos “locais certos”. A maneira mais recomendável de fazer isso, é
utilizar os padrões do Filesystem Hierarchy Standard (FHS), ou Hierarquia Padrão do Sistema de Arquivos.
O padrão completo pode ser consultado em [6]. Enumeram-se a seguir apenas alguns dos
exemplos mais relevantes no contexto do presente trabalho.
/bin O diretório /bin armazena os executáveis (binary, ou binários, isto é, arquivos executáveis) dos comandos básicos do sistema, tais como o su, grep, tar, cat, rm, pwd,
etc. Este diretório consome em geral comparativamente pouco espaço.
/usr A maior parte dos programas fica instalada dentro do diretório /usr, acrônimo de
Unix System Resources. Este é de longe o diretório com mais arquivos em qualquer
sistema Unix ou similares, pois é aqui que ficam os executáveis e bibliotecas de todos
os principais programas.
/usr/bin Em particular, a sub-pasta /usr/bin, por exemplo, armazena cerca de 2.000
programas e atalhos para programas numa instalação tı́pica. Nos sistemas GNU/Linux
existem aplicativos tais como o which ou o type, que servem para localizar executáveis,
desde que possam ser localizados através da variável de ambiente PATH do sistema.1
/usr/lib Um outro sub-diretório de /usr igualmente populado é o /usr/lib, onde ficam
armazenadas as bibliotecas usadas pelos programas. A função destas bibliotecas é um
tanto similar à dos arquivos .dll no Windows. As bibliotecas com extensão .a são
1
O type não é um programa propriamente dito, mas um comando built-in da GNU Bourne Again Shell
(Bash), um exemplo particular de shell largamente utilizada em quase todos os sistemas GNU/Linux.
19
20
Debianização
bibliotecas estáticas, enquanto as terminadas em .so são bibliotecas compartilhadas,
usadas por vários programas.2
/usr/share/man Neste outro sub-diretório estão armazenados os arquivos com todas as informações sobre as manpages, ou seja, manuais de aplicativos e configurações existentes
no sistema. Com maior precisão, este diretório consiste na verdade a raiz principal dos
manuais, sendo que as diferentes páginas podem ser armazenadas em locais especı́ficos,
dependendo do seu conteúdo, e a estrutura de sub-diretórios fica dividida em função
disso, genericamente na forma /usr/share/man/section, onde section indica a seção
particular onde encontra-se cada tema especı́fico.
/usr/share/doc Local especı́fico para documentações diversas, que não se enquadram em
outros sub-diretórios, por exemplo: ChangeLog, arquivos de Copyright e licença de uso
e distribuição, exemplos de uso ou configuração para um dado aplicativo, etc.
/etc O diretório /etc concentra os arquivos de configuração do sistema, substituindo de
certa forma o registro do Windows. A vantagem é que enquanto o registro é uma espécie
de caixa preta, os arquivos e scripts do diretório /etc são desenvolvidos justamente
para facilitar a edição manual, embora na maioria dos casos isto não seja necessário,
graças aos vários utilitários de configuração disponı́veis.
Os arquivos de configuração recebem geralmente o nome dos aplicativos seguidos da
extensão .conf. Por exemplo, o arquivo de configuração do dhcpd, um serviço cliente
de DHCP, 3 é o arquivo /etc/dhcpd.conf, enquanto que o do proftp, um servidor de
FTP é o arquivo /etc/proftpd.conf.4
5.2
Pacotes Binários do Debian
Num sistema GNU/Linux baseado no Debian, a melhor maneira de instalar aplicativos
seguindo os padrões do FHS é gerar “pacotes” de software pré-compilados. A partir desse
pacote, o sistema de gerenciamento de pacotes binários do Debian, denominado Advanced
Package Tools ou APT, encarrega-se de instalar os “arquivos convenientes” nos “locais certos”.
Mais ainda, o APT mantém a informação do pacote como uma unidade per se frente
ao sistema. Isso possibilita não somente integrar os aplicativos no sistema através da sua
instalação de maneira distribuida nos diferentes diretórios do sistema de maneira simples,
mas também, e mais importante, removê-los e/ou atualizá-los de maneira completamente
2
Esta extensão deriva de shared object. Mais precisamente, as bibliotecas compartilhadas possuem em
geral nomes acabando em .so.version, por exemplo: .so.1, .so.3, etc.
3
Acrônimo de Dynamic Host Configuration Protocol, ou Protocolo para a Configuração Dinâmica de
Rede.
4
Acrônimo de File Transfer Protocol, ou Protocolo para a Transferência de Arquivos.
5.2 Pacotes Binários do Debian
21
transparente para o usuário.
O código-fonte utilizado como base foi o mesmo utilizado na compilação do Festival, a
saber:
http://www.cstr.ed.ac.uk/downloads/festival/1.95/festival-1.95-beta.tar
Também foi obtido o código-fonte correspondente a outra versão de Festival do repositório
do Debian. Para tanto, criou-se um arquivo sources.list temporário contendo as linhas:
deb http://ftp.de.debian.org/debian lenny main contrib non-free
deb-src http://ftp.de.debian.org/debian lenny main contrib non-free
Observa-se que a segunda linha refere-se a um repositório de código- fonte, pois no Debian
tais arquivos devem estar sempre disponı́ves. Uma vez editado o arquivo sources.list os
arquivos desejados podem ser obtido rotineiramente via APT:
apt-get source festival
Instalaram-se também algumas dependências de compilação adicionais:
apt-get build-dep festival
Essas dependências adicionais consistem em programas necessários para gerar a documentação (manpages), por exemplo. Do código-fonte do Debian aproveitamos apenas o diretório
festival/debian, com particular destaque para o conteúdo do sub-diretório patches. Essa
pasta contém 95 patches, ou seja, trechos de código-fonte, que devem ser aplicados no código
original do CSTR antes da compilação. Alguns desses patches servem para implementar o
FHS, por exemplo config_config.in.diff, no entanto outros visam o conserto de erros
(bug-fixes), como src/modules/Text/text_modes.cc.
Foram acrescidos ainda varios outros patches desenvolvidos originaria e exclusivamente
no contexto do presente trabalho, a saber:
OGIresLPC-2.0.7.diff
src_modules_OGI-common_OGI_SingleTrack.cc.diff
lib_abscent_files.diff
config_config_ogi.diff
config_config.in_ogi.diff
lib_siod.scm.diff
src_modules_OGIdbase_path_fixes.diff
lib_festival.scm_ogi.diff
lib_languages.scm_ogi.diff
lib_ogi_languages.scm_ogi.diff
lib_voices.scm_ogi.diff
lib_bras_port_phones.scm.diff
22
Debianização
Observa-se que o primeiro arquivo corresponde ao sintetizadador LPC residual da OGI, ou
seja, o código correspondente foi incorporado na forma de patch. Considera-se oportuno
salientar também que os últimos 5 patches da lista servem para adicionar novas funcionalidades no Festival, ausentes no código original do CSTR.
Além disso foram introduzidas outras melhorias relativas à produção do pacote binário.
Por exemplo:
• O padrão de empacotamento foi atualizado para satisfazer os requerimentos da DebianPolicy versão 3.8.0. Vide [2] para detalhes.
• O nı́vel de compatibilidade do empacotamento foi atualizado de 5 para 7. Para saber o
que isso significa, vide a página do manual do comando debhelper, na seção Debhelper
compatibility levels.
Um outro item a ser levado em consideração consistiu na modificação, simples mas não
trivial, do arquivo debian/rules para utilizar a versão correta do compilador C e C++, pela
adição das linhas:
export
export
export
export
CC := /usr/bin/gcc-2.95
CXX := /usr/bin/g++-2.95
GCC295 := /usr/bin/gcc-2.95
CXX295 := /usr/bin/g++-2.95
Embora a modificação possa parecer trivial, grande parte do código correspondente a todos
os makefiles do projeto Festival teve que ser vasculhado para isso, pois GCC295 e CXX295 são
variáveis particulares do mesmo, entre muitas outras opções de compiladores suportados.
Observa-se também que essa modificação permite utilizar os compiladores desejados sem
necessidade de modificar os links simbólicos, segundo indicado no final da Seção 4.4.
Uma vez efetuadas as modificações, os pacotes binários podem ser gerados, como de
praxe nos sistemas Debian, através do comando dpkg-buildpackage com os argumentos
apropriados no presente caso:
dpkg-buildpackage -us -uc -rfakeroot -b
Com relação aos argumentos do comando, tem-se:
-us: Significa unsign sources. Ou seja, não deseja-se autenticar os pacotes fontes, pois no
presente caso não trata-se de um mantenedor do Debian com intenção de adicionar o
pacote num repositório do Debian (Vide Seção 5.3). Observa-se que a autenticação do
pacote acrescenta um item de segurança para os usuários com relação à procedência do
pacote. Observa-se também que para realizar a autenticação é necessário ter instalado
o programa GNU Privacy Guard (GnuPG), como também requer possuir uma chave
privada e divulgar a chave pública correspondente. Essas tarefas foram omitidas, por
serem consideradas além do escopo do presente trabalho.
5.3 Repositórios do Debian
23
-uc: Significa unsign changes. Ou seja, não deseja-se autenticar o arquivo .changes. Cabem
aqui os mesmos comentários que no item anterior.
-rfakeroot: Utiliza o programa fakeroot para obter privilégios administrativos, que é
o procedimento recomendado. Observa-se que poderia ter-se utilizado algum outro
programa análogo, como por exemplo o sudo. Porém, isso não é recomendado pelo
seguinte motivo. Segundo consta nas normas da Debian-Policy, os arquivos e diretórios
contidos nos pacotes binários devem possuir UID (User IDentifier ) e GID (Group
IDentifier ) iguais a zero, ou seja, devem ser propriedade do usuário root. Porém, o
único usuário no sistema que pode fazer isso é o root mesmo. O programa fakeroot
é o mais recomendável para essa tarefa, pois serve exatamente para isso e para nada
mais. Em particular, não é possı́vel executar comandos com privilégios administrativos
com tal programa, o que poderia ser feito através do sudo, por exemplo, abrindo uma
potencial brecha de segurança.
-b: Significa binary build only. Ou seja, gera apenas os pacotes binários, omitindo os fontes.
Para maiores detalhes, consultar a página do manual do programa dpkg-buildpackage.
Além de fazer algumas verificações básicas, a tarefa deste programa consiste em executar
o arquivo debian/rules, que é na verdade um makefile, onde constam as instruções para
construir o pacote de fato, via o utilitário make, já abordado no Capı́tulo 4.
5.3
Repositórios do Debian
Uma vez debianizado, o software pode ser distribuı́do de maneira avulsa no formato .deb,
ou pode ser adicionado no repositório do Debian, ou ambas as coisas.
Um repositório de pacotes binários é um diretório com os arquivos .deb dos pacotes especı́ficos e alguns outros arquivos especiais necessários para o gerenciamento do repositório.
Além dos repositórios de pacotes binários, existem (ou deveriam existir) também repositórios
com código-fonte, contendo arquivos .orig.tar.gz e .diff.gz.
Para que um pacote seja adicionado no repositório do projeto Debian propriamente dito,
o aplicativo originário do mesmo deve ser, de preferência, compatı́vel com as especificações
do Debian Free Software Guidelines (DFSG), ou Normas do Debian para o Software Livre.
Basicamente, um aplicativo adequa-se aos requerimentos do DFSG se o seu código-fonte
estiver completamente disponı́vel e se for possı́vel modificá-lo e distribuı́-lo livremente. Vide
[2, Seção 2.1, p. 5-6] para maiores detalhes.
Como primeiro passo para incluir algum pacote no Debian, o interessado deve postar
uma mensagem ITP (Internet To Package). Esta consiste em um relatório de “erro” especial, avisando que se deseja transformar algum produto de software em pacote binário. Seu
objetivo principal consiste em ser uma notificação para que outros voluntários do projeto
24
Debianização
Debian saibam o que está sendo feito e dessa maneira evitem trabalhar inadvertidamente no
mesmo produto.
Uma vez que o pacote estiver pronto, deve ser solicitado a um mantenedor do Debian
que cheque o pacote e, se tudo estiver correto, o coloque no repositório. De fato, um pacote
somente pode ser incluı́do no repositório do Debian através de um mantenedor do Debian.
A função básica desse mantenedor consiste em checar os pacotes a serem incluı́dos e fornecer
dicas e suporte até entender que um determinado pacote está em condições de ser adicionado.
Somente então o pacote é colocado de fato no repositório. Se o software veiculado pelo pacote em questão for de reconhecida qualidade e possuir certa relevância, seu desenvolvedor
poderá então tornar-se também um mantenedor aceito no projeto Debian.
O repositório do Debian é dividido em quatro distribuições principais, a saber: oldstable, stable, testing e unstable, apesar de normalmente serem referenciadas apenas três,
omitindo-se a old-stable. Cada uma dessas distribuições é dividida, por sua vez, em três
componentes principais: main, contrib e non-free.
Se a licença do aplicativo for compatı́vel com as normas do DFSG, o pacote é alocado na
componente main, isto é, a seção principal do Debian. Caso contrário vai para a componente
non-free e ainda, se for compatı́vel mas depender de outros pacotes da componente non-free,
vai para a componente contrib. A questão do código-fonte e licenciamento do software é
tão importante no Debian que, falando estritamente, as componentes non-free e contrib não
são na verdade partes do Debian, mas apenas uma espécie de serviço prestado a seus usuários.
Uma vez incluı́do no repositório do Debian, cada pacote possui um ciclo de vida próprio,
que pode ser descrito resumidamente da seguinte maneira. Sempre que um novo pacote
ou uma atualização para um pacote já existente são disponibilizados, são colocados na distribuição unstable. Se após um perı́odo de 10 dias o pacote não apresentar nenhum problema
sério, ele é automaticamente transferido para a distribuição testing. Quando se decide por
um novo release ou lançamento do Debian, a distribuição testing é “congelada” (freeze), o
que significa que nenhum pacote novo pode ser adicionado e nenhum pacote existente pode
ser atualizado, mas somente erros remanescentes podem ser consertados. Uma vez que não
exista mais nenhum acerto a ser feito, a distribuição testing vira stable. Uma nova distribuição testing é adicionada e a antiga distribuição stable vira old-stable.
Existem algumas vantagens de se adicionar pacotes ao Debian. Um diferencial importante consiste na abrangência, pois em tal caso o pacote será espelhado mundialmente junto
com o repositório. Além disso, se o pacote constar na distribuição stable será adicionado
também às imagens oficiais de CDs do Debian e é muito provável que seja incluı́do também
em todas as distribuições GNU/Linux baseadas no Debian. Uma outra vantagem, decorrente
da abrangência do Debian, consiste em que os aplicativos serão automaticamente adicionados ao Debian Bug Tracking System, ou Sistema de Monitoramento de Erros do Debian,
5.3 Repositórios do Debian
25
para facilitar o apontamento de erros ou sugestões de melhorias dos usuários em todas as
partes do mundo.
Contudo, uma outra opção igualmente viável para a distribuição de pacotes binários sem
adicioná-los ao projeto principal do Debian, consiste em criar um repositório particular contendo os mesmos e disponibilizá-lo publicamente para os usuários. Para todo fim prático, é
quase a mesma coisa, graças aos aplicativos e procedimentos padronizados do APT desenvolvidos pelos voluntários do projeto Debian.
Para montar o repositório particular no contexto do presente projeto, os pacotes binários
gerados segundo descrito na seção anterior foram colocados todos em um mesmo diretório
nomeado debs e um arquivo de ı́ndice de pacotes5 foi gerado com o comando:
apt-ftparchive packages debs >Packages
Observa-se que os pacotes não precisam estar todos na mesma pasta, podendo estar espalhados por toda uma hierarquia de diretórios. O nome da pasta debs também é arbitrário,
podendo ser qualquer nome de diretório válido. A única restrição consiste no nome do arquivo de ı́ndice, que deve ser nomeado Packages necessariamente.
Para criar um repositório contendo o código-fonte o procedimento é análogo e pode ser
feito através do comando:
apt-ftparchive sources sources 2>/dev/null >Sources
A única ressalva neste caso, consiste em que os arquivos fonte devem estar contidos todos no
mesmo diretório, nomeado sources no exemplo acima, mas o nome pode ser arbitrário.
5
Também denominado arquivo de “cabeçalhos” em alguns textos.
Capı́tulo 6
Conclusão
Seguindo a metodologia adotada, iniciou-se o trabalho com um estudo teórico sobre os
princı́pios da sı́ntese de voz e seu funcionamento. Foi abordado o Sistema de Sı́ntese de
Voz Festival e o módulo sintetizador LPC residual desenvolvido de maneira independente
pelo CSLU-OGI. Em particular, foi realizada uma análise sobre os diferentes tipos de licença
sob as quais são distribuı́dos os componentes do Festival (sintetizador propriamente dito,
biblioteca de programas utilizados e os diferentes conjuntos de fonemas) e do sintetizador
LPC residual da OGI.
Em uma segunda etapa, o Festival foi recompilado com os fonemas em português do
Brasil. O sistema operacional utilizado foi a distribuição GNU/Linux Debian versão 5.0.1
de codename lenny, com o kernel Linux da série 2.6.26. Foi realizado o download do códigofonte do Festival versão 1.95-beta e do módulo OGI. O código- fonte dos fonemas em
português brasileiro foi conseguido através de terceiros. Após a descompactação de todos os
arquivos no mesmo diretório foi possı́vel compilar o Festival com os fonemas em português
brasileiro. O Festival, assim compilado, foi testado, constatando-se que funciona corretamente com os fonemas adicionados. Além disso, novas funcionalidades foram acrescentadas
no Festival, a saber:
• Um novo argumento que permite utilizar tais fonemas diretamente a partir da linha
de comando.
• Opção para utilizar os fonemas em português por padrão, tanto na linha de comando
como no modo interativo.
Essas funcionalidades foram implementadas modificando o código-fonte desenvolvido em
Scheme.
Posteriormente, com os programas compilados, foram gerados os seguintes pacotes binários
do Debian :
festival-ogi_1.95~beta-2_i386.deb
27
28
Conclusão
festvox-aga_1.95~beta-2_i386.deb
libestools1.2_1.2.95~beta-2_i386.deb
libestools1.2-dev_1.2.95~beta-2_i386.deb
speech-tools_1.2.95~beta-2_i386.deb
Os pacotes foram testados, constatando-se que, no sistema operacional utilizado, podem ser
instalados e desinstalados corretamente em reiteradas oportunidades.
Um repositório particular foi montado, com a finalidade de alocar os pacotes binários
gerados. O repositório pode ser acesado acrescentando-se as linhas:
deb-src http://each.uspnet.usp.br/auil/festival ./
deb http://each.uspnet.usp.br/auil/festival ./
no arquivo /etc/apt/sources.list, como de praxe nos sistemas Debian. O funcionamento
do repositório também foi testado, constatando-se que os pacotes podem ser remotamente
instalados e desinstalados via apt-get de maneira correta em várias oportunidades.
Além disso, como primeiro passo para uma eventual inclusão dos pacotes binários no
próprio repositório do projeto Debian, foi contactado o mantenedor:
Otavio Salvador <[email protected]>
Ele mostrou-se muito receptivo com relação ao projeto, assinalando a sua inclusão no projeto
Debian como altamente viável. Os pacotes não foram incluidos até o momento do encerramento da redação da presente monografia, devido aos testes prévios por parte do mantenedor,
como também os requerimentos administrativos do próprio projeto Debian, que demandam
um certo tempo.
Apêndice A
Licença Pública Geral GNU
O texto em inglês da Licença Pública Geral GNU é o único oficialmente reconhecido, sendo
portanto reproduzido aqui. No Apêndice B é reproduzida a versão em português (não-oficial)
para benefı́cio dos leitores de lı́ngua portuguesa.
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. 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
29
30
Licença Pública Geral GNU
them 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 prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. 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.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers’ and authors’ protection, the GPL
that there is no warranty for this free software. For
authors’ sake, the GPL requires that modified versions
changed, so that their problems will not be attributed
authors of previous versions.
clearly explains
both users’ and
be marked as
erroneously to
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users’ freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
31
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
32
Licença Pública Geral GNU
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work’s
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
33
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users’ Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work’s
users, your or third parties’ legal rights to forbid circumvention of
34
Licença Pública Geral GNU
technological measures.
4. Conveying Verbatim Copies.
You may convey 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;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
35
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation’s users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
36
Licença Pública Geral GNU
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
37
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
38
Licença Pública Geral GNU
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
39
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
40
Licença Pública Geral GNU
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party’s predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor’s "contributor version".
A contributor’s "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
41
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor’s essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient’s use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
42
Licença Pública Geral GNU
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others’ Freedom.
If 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 convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU 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
43
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy’s
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
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.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
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.
17. Interpretation of Sections 15 and 16.
44
Licença Pública Geral GNU
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
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
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program’s name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 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, see <http://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
45
<program> Copyright (C) <year> <name of author>
This program 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, your program’s commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<http://www.gnu.org/licenses/>.
The GNU 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 Lesser General
Public License instead of this License. But first, please read
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
Apêndice B
Tradução em Português da GPL
LICENÇA PÚBLICA GERAL GNU
Vers~
ao 2, junho de 1991
This is an unofficial translation of the GNU General Public License
into Brazilian Portuguese. It was not published by the Free Software
Foundation, and does not legally state the distribution terms for
software that uses the GNU GPL -- only the original English text of
the GNU GPL does that. However, we hope that this translation will
help Brazilian Portuguese speakers understand the GNU GPL better.
Esta é uma traduç~
ao n~
ao-oficial da Licença Pública Geral GNU ("GPL
GNU") para o portugu^
es do Brasil. Ela n~
ao foi publicada pela Free
Software Foundation, e legalmente n~
ao afirma os termos de distribuiç~
ao
de software que utiliza a GPL GNU -- apenas o texto original da GPL
GNU, em ingl^
es, faz isso. Contudo, esperamos que esta traduç~
ao ajude
aos que utilizam o portugu^
es do Brasil a entender melhor a GPL GNU.
Copyright (C) 1989, 1991 Free Software Foundation, Inc. 675 Mass Ave,
Cambridge, MA 02139, USA
A qualquer pessoa é permitido copiar e distribuir cópias desse
documento de licença, desde que sem qualquer alteraç~
ao.
Introduç~
ao
As licenças de muitos software s~
ao desenvolvidas para restringir sua
liberdade de compartilhá-lo e mudá-lo. Contrária a isso, a Licença
Pública Geral GNU pretende garantir sua liberdade de compartilhar e
47
48
Tradução em Português da GPL
alterar software livres -- garantindo que o software será livre e
gratuito para os seus usuários. Esta Licença Pública Geral aplica-se à
maioria dos software da Free Software Foundation e a qualquer outro
programa cujo autor decida aplicá-la. (Alguns outros software da FSF
s~
ao cobertos pela Licença Pública Geral de Bibliotecas, no entanto.)
Voc^
e pode aplicá-la também aos seus programas.
Quando nos referimos a software livre, estamos nos referindo a
liberdade e n~
ao a preço. Nossa Licença Pública Geral foi desenvolvida
para garantir que voc^
e tenha a liberdade de distribuir cópias de
software livre (e cobrar por isso, se quiser); que voc^
e receba o
código-fonte ou tenha acesso a ele, se quiser; que voc^
e possa mudar o
software ou utilizar partes dele em novos programas livres e
gratuitos; e que voc^
e saiba que pode fazer tudo isso.
Para proteger seus direitos, precisamos fazer
a qualquer um negar estes direitos ou solicitar
abdique. Estas restriç~
oes traduzem-se em certas
voc^
e, se voc^
e for distribuir cópias do software
restriç~
oes que impeçam
que voc^
e deles
responsabilidades para
ou modificá-lo.
Por exemplo, se voc^
e distribuir cópias de um programa, gratuitamente
ou por alguma quantia, voc^
e tem que fornecer aos recebedores todos os
direitos que voc^
e possui. Voc^
e tem que garantir que eles também
recebam ou possam obter o código-fonte. E voc^
e tem que mostrar-lhes
estes termos para que eles possam conhecer seus direitos.
Nós protegemos seus direitos em dois passos: (1) com copyright do
software e (2) com a oferta desta licença, que lhe dá permiss~
ao legal
para copiar, distribuir e/ou modificar o software.
Além disso, tanto para a proteç~
ao do autor quanto a nossa,
gostarı́amos de certificar-nos que todos entendam que n~
ao há qualquer
garantia nestes software livres. Se o software é modificado por alguém
mais e passado adiante, queremos que seus recebedores saibam que o que
eles obtiveram n~
ao é original, de forma que qualquer problema
introduzido por terceiros n~
ao interfira na reputaç~
ao do autor
original.
Finalmente, qualquer programa é ameaçado constantemente por patentes
de software. Queremos evitar o perigo de que distribuidores de
software livre obtenham patentes individuais, o que tem o efeito de
tornar o programa proprietário. Para prevenir isso, deixamos claro que
49
qualquer patente tem que ser licenciada para uso livre e gratuito por
qualquer pessoa, ou ent~
ao que nem necessite ser licenciada.
Os termos e condiç~
oes precisas para cópia, distribuiç~
ao e
modificaç~
ao se encontram abaixo:
LICENÇA PÚBLICA GERAL GNU
AO
AO E MODIFICAÇ~
OES PARA CÓPIA, DISTRIBUIÇ~
TERMOS E CONDIÇ~
0. Esta licença se aplica a qualquer programa ou outro trabalho que
contenha um aviso colocado pelo detentor dos direitos autorais
informando que aquele pode ser distribuı́do sob as condiç~
oes desta
Licença Pública Geral. O "Programa" abaixo refere-se a qualquer
programa ou trabalho, e "trabalho baseado no Programa" significa tanto
o Programa em si como quaisquer trabalhos derivados, de acordo com a
lei de direitos autorais: isto quer dizer um trabalho que contenha o
Programa ou parte dele, tanto originalmente ou com modificaç~
oes, e/ou
traduç~
ao para outros idiomas. (Doravante o processo de traduç~
ao está
incluı́do sem limites no termo "modificaç~
ao".) Cada licenciado é
mencionado como "voc^
e".
Atividades outras que a cópia, a distribuiç~
ao e modificaç~
ao n~
ao est~
ao
cobertas por esta Licença; elas est~
ao fora de seu escopo. O ato de
executar o Programa n~
ao é restringido e o resultado do Programa é
coberto apenas se seu conteúdo contenha trabalhos baseados no Programa
(independentemente de terem sido gerados pela execuç~
ao do
Programa). Se isso é verdadeiro depende do que o programa faz.
1. Voc^
e pode copiar e distribuir cópias fiéis do código-fonte do
Programa da mesma forma que voc^
e o recebeu, usando qualquer meio,
deste que voc^
e conspı́cua e apropriadamente publique em cada cópia um
aviso de direitos autorais e uma declaraç~
ao de inexist^
encia de
garantias; mantenha intactas todos os avisos que se referem a esta
Licença e à aus^
encia total de garantias; e forneça a outros
recebedores do Programa uma cópia desta Licença, junto com o Programa.
Voc^
e pode cobrar pelo ato fı́sico de transferir uma cópia e pode,
opcionalmente, oferecer garantia em troca de pagamento.
2. Voc^
e pode modificar sua cópia ou cópias do Programa, ou qualquer
parte dele, assim gerando um trabalho baseado no Programa, e copiar e
distribuir essas modificaç~
oes ou trabalhos sob os termos da seç~
ao 1
50
Tradução em Português da GPL
acima, desde que voc^
e também se enquadre em todas estas condiç~
oes:
a) Voc^
e tem que fazer com que os arquivos modificados levem avisos
proeminentes afirmando que voc^
e alterou os arquivos, incluindo a
data de qualquer alteraç~
ao.
b) Voc^
e tem que fazer com que quaisquer trabalhos que voc^
e
distribua ou publique, e que integralmente ou em partes contenham
ou sejam derivados do Programa ou de suas partes, sejam
licenciados, integralmente e sem custo algum para quaisquer
terceiros, sob os termos desta Licença.
c) Se qualquer programa modificado normalmente l^
e comandos
interativamente quando executados, voc^
e tem que fazer com que,
quando iniciado tal uso interativo da forma mais simples, seja
impresso ou mostrado um anúncio de que n~
ao há qualquer garantia
(ou ent~
ao que voc^
e fornece a garantia) e que os usuários podem
redistribuir o programa sob estas condiç~
oes, ainda informando os
usuários como consultar uma cópia desta Licença. (Exceç~
ao: se o
Programa em si é interativo mas normalmente n~
ao imprime estes
tipos de anúncios, seu trabalho baseado no Programa n~
ao precisa
imprimir um anúncio.)
Estas exig^
encias aplicam-se ao trabalho modificado como um todo. Se
seç~
oes identificáveis de tal trabalho n~
ao s~
ao derivadas do Programa, e
podem ser razoavelmente consideradas trabalhos independentes e
separados por si só, ent~
ao esta Licença, e seus termos, n~
ao se aplicam
a estas seç~
oes quando voc^
e distribui-las como trabalhos em
separado. Mas quando voc^
e distribuir as mesmas seç~
oes como parte de um
todo que é trabalho baseado no Programa, a distribuiç~
ao como um todo
tem que se enquadrar nos termos desta Licença, cujas permiss~
oes para
outros licenciados se estendem ao todo, portanto também para cada e
toda parte independente de quem a escreveu.
Desta forma, esta seç~
ao n~
ao tem a intenç~
ao de reclamar direitos os
contestar seus direitos sobre o trabalho escrito completamente por
voc^
e; ao invés disso, a intenç~
ao é a de exercitar o direito de
controlar a distribuiç~
ao de trabalhos, derivados ou coletivos,
baseados no Programa.
Adicionalmente, a mera adiç~
ao ao Programa de outro trabalho n~
ao
baseado no Programa (ou de trabalho baseado no Programa) em um volume
51
de armazenamento ou meio de distribuiç~
ao n~
ao faz o outro trabalho
parte do escopo desta Licença.
3. Voc^
e pode copiar e distribuir o Programa (ou trabalho baseado
nele, conforme descrito na Seç~
ao 2) em código-objeto ou em forma
executável sob os termos das Seç~
oes 1 e 2 acima, desde que voc^
e
faça um dos seguintes:
a) O acompanhe com o código-fonte completo e em forma acessı́vel
por máquinas, que tem que ser distribuı́do sob os termos das Seç~
oes
1 e 2 acima e em meio normalmente utilizado para o interc^
ambio de
software; ou,
b) O acompanhe com uma oferta escrita, válida por pelo menos tr^
es
anos, de fornecer a qualquer um, com um custo n~
ao superior ao
custo de distribuiç~
ao fı́sica do material, uma cópia do
código-fonte completo e em forma acessı́vel por máquinas, que tem
que ser distribuı́do sob os termos das Seç~
oes 1 e 2 acima e em meio
normalmente utilizado para o interc^
ambio de software; ou,
c) O acompanhe com a informaç~
ao que voc^
e recebeu em relaç~
ao à
oferta de distribuiç~
ao do código-fonte correspondente. (Esta
alternativa é permitida somente em distribuiç~
ao n~
ao comerciais, e
apenas se voc^
e recebeu o programa em forma de código-objeto ou
executável, com oferta de acordo com a Subseç~
ao b acima.)
O código-fonte de um trabalho corresponde à forma de trabalho
preferida para se fazer modificaç~
oes. Para um trabalho em forma
executável, o código-fonte completo significa todo o código-fonte de
todos os módulos que ele contém, mais quaisquer arquivos de definiç~
ao
de "interface", mais os "scripts" utilizados para se controlar a
compilaç~
ao e a instalaç~
ao do executável. Contudo, como exceç~
ao
especial, o código-fonte distribuı́do n~
ao precisa incluir qualquer
componente normalmente distribuı́do (tanto em forma original quanto
binária) com os maiores componentes (o compilador, o "kernel" etc.) do
sistema operacional sob o qual o executável funciona, a menos que o
componente em si acompanhe o executável.
Se a distribuiç~
ao do executável ou código-objeto é feita através da
oferta de acesso a cópias de algum lugar, ent~
ao ofertar o acesso
equivalente a cópia, do mesmo lugar, do código-fonte equivale à
distribuiç~
ao do código-fonte, mesmo que terceiros n~
ao sejam compelidos
52
Tradução em Português da GPL
a copiar o código-fonte com o código-objeto.
4. Voc^
e n~
ao pode copiar, modificar, sub-licenciar ou distribuir o
Programa, exceto de acordo com as condiç~
oes expressas nesta
Licença. Qualquer outra tentativa de cópia, modificaç~
ao,
sub-licenciamento ou distribuiç~
ao do Programa n~
ao é valida, e
cancelará automaticamente os direitos que lhe foram fornecidos por
esta Licença. No entanto, terceiros que de voc^
e receberam cópias ou
direitos, fornecidos sob os termos desta Licença, n~
ao ter~
ao suas
licenças terminadas, desde que permaneçam em total concord^
ancia com
ela.
5. Voc^
e n~
ao é obrigado a aceitar esta Licença já que n~
ao a
assinou. No entanto, nada mais o dará permiss~
ao para modificar ou
distribuir o Programa ou trabalhos derivados deste. Estas aç~
oes s~
ao
proibidas por lei, caso voc^
e n~
ao aceite esta Licença. Desta forma, ao
modificar ou distribuir o Programa (ou qualquer trabalho derivado do
Programa), voc^
e estará indicando sua total aceitaç~
ao desta Licença
para faz^
e-los, e todos os seus termos e condiç~
oes para copiar,
distribuir ou modificar o Programa, ou trabalhos baseados nele.
6. Cada vez que voc^
e redistribuir o Programa (ou qualquer trabalho
baseado nele), os recebedores adquirir~
ao automaticamente do
licenciador original uma licença para copiar, distribuir ou modificar
o Programa, sujeitos a estes termos e condiç~
oes. Voc^
e n~
ao poderá impor
aos recebedores qualquer outra restriç~
ao ao exercı́cio dos direitos
ent~
ao adquiridos. Voc^
e n~
ao é responsável em garantir a concord^
ancia de
terceiros a esta Licença.
7. Se, em conseqü^
encia de decis~
oes judiciais ou alegaç~
oes de
infringimento de patentes ou quaisquer outras raz~
oes (n~
ao limitadas a
assuntos relacionados a patentes), condiç~
oes forem impostas a voc^
e
(por ordem judicial, acordos ou outras formas) e que contradigam as
condiç~
oes desta Licença, elas n~
ao o livram das condiç~
oes desta
Licença. Se voc^
e n~
ao puder distribuir de forma a satisfazer
simultaneamente suas obrigaç~
oes para com esta Licença e para com as
outras obrigaç~
oes pertinentes, ent~
ao como conseqü^
encia voc^
e n~
ao poderá
distribuir o Programa. Por exemplo, se uma licença de patente n~
ao
permitirá a redistribuiç~
ao, livre de "royalties", do Programa, por
todos aqueles que receberem cópias direta ou indiretamente de voc^
e,
ent~
ao a única forma de voc^
e satisfazer a ela e a esta Licença seria a
de desistir completamente de distribuir o Programa.
53
Se qualquer parte desta seç~
ao for considerada inválida ou n~
ao
aplicável em qualquer circunst^
ancia particular, o restante da seç~
ao se
aplica, e a seç~
ao como um todo se aplica em outras circunst^
ancias.
O propósito desta seç~
ao n~
ao é o de induzi-lo a infringir quaisquer
patentes ou reivindicaç~
ao de direitos de propriedade outros, ou a
contestar a validade de quaisquer dessas reivindicaç~
oes; esta seç~
ao
tem como único propósito proteger a integridade dos sistemas de
distribuiç~
ao de software livres, o que é implementado pela prática de
licenças públicas. Várias pessoas t^
em contribuı́do generosamente e em
grande escala para os software distribuı́dos usando este sistema, na
certeza de que sua aplicaç~
ao é feita de forma consistente; fica a
critério do autor/doador decidir se ele ou ela está disposto a
distribuir software utilizando outro sistema, e um licenciado n~
ao pode
impor qualquer escolha.
Esta seç~
ao destina-se a tornar bastante claro o que se acredita ser
conseqü^
encia do restante desta Licença.
8. Se a distribuiç~
ao e/ou uso do Programa s~
ao restringidos em certos
paı́ses por patentes ou direitos autorais, o detentor dos direitos
autorais original, e que colocou o Programa sob esta Licença, pode
incluir uma limitaç~
ao geográfica de distribuiç~
ao, excluindo aqueles
paı́ses de forma a tornar a distribuiç~
ao permitida apenas naqueles ou
entre aqueles paı́ses ent~
ao n~
ao excluı́dos. Nestes casos, esta Licença
incorpora a limitaç~
ao como se a mesma constasse escrita nesta Licença.
9. A Free Software Foundation pode publicar vers~
oes revisadas e/ou
novas da Licença Pública Geral de tempos em tempos. Estas novas
vers~
oes ser~
ao similares em espı́rito à vers~
ao atual, mas podem diferir
em detalhes que resolvem novos problemas ou situaç~
oes.
A cada vers~
ao é dada um número distinto. Se o Programa especifica um
número de vers~
ao especı́fico desta Licença que se aplica a ele e a
"qualquer nova vers~
ao", voc^
e tem a opç~
ao de aceitar os termos e
condiç~
oes daquela vers~
ao ou de qualquer outra vers~
ao publicada pela
Free Software Foundation. Se o programa n~
ao especifica um número de
vers~
ao desta Licença, voc^
e pode escolher qualquer vers~
ao já publicada
pela Free Software Foundation.
10. Se voc^
e pretende incorporar partes do Programa em outros
54
Tradução em Português da GPL
programas livres cujas condiç~
oes de distribuiç~
ao s~
ao diferentes,
escreva ao autor e solicite permiss~
ao. Para o software que a Free
Software Foundation detém direitos autorais, escreva à Free Software
Foundation; às vezes nós permitimos exceç~
oes a este caso. Nossa
decis~
ao será guiada pelos dois objetivos de preservar a condiç~
ao de
liberdade de todas as derivaç~
oes do nosso software livre, e de
promover o compartilhamento e reutilizaç~
ao de software em aspectos
gerais.
AUS^
ENCIA DE GARANTIAS
^NUS, NA
~O HÁ QUALQUER
11. UMA VEZ QUE O PROGRAMA É LICENCIADO SEM O
GARANTIA PARA O PROGRAMA, NA EXTENS~
AO PERMITIDA PELAS LEIS
APLICÁVEIS. EXCETO QUANDO EXPRESSADO DE FORMA ESCRITA, OS DETENTORES
DOS DIREITOS AUTORAIS E/OU TERCEIROS DISPONIBILIZAM O PROGRAMA "NO
ESTADO", SEM QUALQUER TIPO DE GARANTIAS, EXPRESSAS OU IMPLÍCITAS,
INCLUINDO, MAS N~
AO LIMITADO A, AS GARANTIAS IMPLÍCITAS DE
COMERCIALIZAÇ~
AO E AS DE ADEQUAÇ~
AO A QUALQUER PROPÓSITO. O RISCO TOTAL
COM A QUALIDADE E DESEMPENHO DO PROGRAMA É SEU. SE O PROGRAMA SE
MOSTRAR DEFEITUOSO, VOC^
E ASSUME OS CUSTOS DE TODAS AS MANUTENÇ~
OES,
~
REPAROS E CORREÇOES.
~O, A MENOS QUE EXIGIDO PELAS LEIS APLICÁVEIS OU
12. EM NENHUMA OCASIA
ACORDO ESCRITO, OS DETENTORES DOS DIREITOS AUTORAIS, OU QUALQUER OUTRA
PARTE QUE POSSA MODIFICAR E/OU REDISTRIBUIR O PROGRAMA CONFORME
PERMITIDO ACIMA, SER~
AO RESPONSABILIZADOS POR VOC^
E POR DANOS, INCLUINDO
QUALQUER DANO EM GERAL, ESPECIAL, ACIDENTAL OU CONSEQÜENTE,
RESULTANTES DO USO OU INCAPACIDADE DE USO DO PROGRAMA (INCLUINDO, MAS
AO LIMITADO A, A PERDA DE DADOS OU DADOS TORNADOS INCORRETOS, OU
N~
E OU POR OUTRAS PARTES, OU FALHAS DO PROGRAMA
PERDAS SOFRIDAS POR VOC^
AO OPERAR COM QUALQUER OUTRO PROGRAMA), MESMO QUE TAL DETENTOR OU
PARTE TENHAM SIDO AVISADOS DA POSSIBILIDADE DE TAIS DANOS.
FIM DOS TERMOS E CONDIÇ~
OES
Como Aplicar Estes Termos aos Seus Novos Programas
Se voc^
e desenvolver um novo programa, e quer que ele seja utilizado
amplamente pelo público, a melhor forma de alcançar este objetivo é
torná-lo software livre que qualquer um pode redistribuir e alterar,
sob estes termos.
55
Para isso, anexe os seguintes avisos ao programa. É mais seguro
anexá-los logo no inı́cio de cada arquivo-fonte para reforçarem mais
efetivamente a inexist^
encia de garantias; e cada arquivo deve possuir
pelo menos a linha de "copyright" e uma indicaç~
ao de onde o texto
completo se encontra.
<uma linha que forneça o nome do programa e uma idéia do que ele faz.>
Copyright (C) <ano> <nome do autor>
Este programa é software livre; voc^
e pode redistribuı́-lo e/ou
modificá-lo sob os termos da Licença Pública Geral GNU, conforme
publicada pela Free Software Foundation; tanto a vers~
ao 2 da
Licença como (a seu critério) qualquer vers~
ao mais nova.
Este programa é distribuı́do na expectativa de ser útil, mas SEM
QUALQUER GARANTIA; sem mesmo a garantia implı́cita de
COMERCIALIZAÇ~
AO ou de ADEQUAÇ~
AO A QUALQUER PROPÓSITO EM
PARTICULAR. Consulte a Licença Pública Geral GNU para obter mais
detalhes.
Voc^
e deve ter recebido uma cópia da Licença Pública Geral GNU
junto com este programa; se n~
ao, escreva para a Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307, USA.
Inclua também informaç~
oes sobre como contactá-lo eletronicamente e por
carta.
Se o programa é interativo, faça-o mostrar um aviso breve como este,
ao iniciar um modo interativo:
Gnomovision vers~
ao 69, Copyright (C) ano nome do
O Gnomovision n~
ao possui QUALQUER GARANTIA; para
detalhes digite ‘show w’. Ele é software livre e
convidado a redistribui-lo sob certas condiç~
oes;
para obter detalhes.
autor
obter mais
voc^
e está
digite ‘show c’
Os comandos hipotéticos ‘show w’ e ‘show c’ devem mostrar as partes
apropriadas da Licença Pública Geral. Claro, os comandos que voc^
e usar
podem ser ativados de outra forma que ‘show w’ e ‘show c’; eles podem
até ser cliques do mouse ou itens de um menu -- o que melhor se
adequar ao programa.
56
Tradução em Português da GPL
Voc^
e também deve obter do seu empregador (se voc^
e trabalha como
programador) ou escola, se houver, uma "declaraç~
ao de aus^
encia de
direitos autorais" sobre o programa, se necessário. Aqui está um
exemplo; altere os nomes:
Yoyodyne, Inc., aqui declara a aus^
encia de quaisquer direitos
autorais sobre o programa ‘Gnomovision’ (que executa interpretaç~
oes
em compiladores) escrito por James Hacker.
<assinatura de Ty Coon>, 1o. de abril de 1989
Ty Con, Vice-presidente
Esta Licença Pública Geral n~
ao permite incorporar seu programa em
programas proprietários. Se seu programa é uma biblioteca de
sub-rotinas, voc^
e deve considerar mais útil permitir ligar aplicaç~
oes
proprietárias com a biblioteca. Se isto é o que voc^
e deseja, use a
Licença Pública Geral de Bibliotecas GNU, ao invés desta Licença.
Apêndice C
Licença do Festival
The system as a whole and most of the files in it are distributed
under the following copyright and conditions
The Festival Speech Synthesis System
Centre for Speech Technology Research
University of Edinburgh, UK
Copyright (c) 1996-2004
All Rights Reserved.
Permission is hereby granted, free of charge, to use and distribute
this software and its documentation without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of this work, and to
permit persons to whom this work is furnished to do so, subject to
the following conditions:
1. The code must retain the above copyright notice, this list of
conditions and the following disclaimer.
2. Any modifications must be clearly marked as such.
3. Original authors’ names are not deleted.
4. The authors’ names are not used to endorse or promote products
derived from this software without specific prior written
permission.
THE UNIVERSITY OF EDINBURGH AND THE CONTRIBUTORS TO THIS WORK
DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT
SHALL THE UNIVERSITY OF EDINBURGH NOR THE CONTRIBUTORS BE LIABLE
FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
57
58
Licença do Festival
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
THIS SOFTWARE.
Some further comments:
Every effort has been made to ensure that Festival does not contain
any violation of intellectual property rights through disclosure of
trade secrets, copyright or patent violation. Considerable time and
effort has been spent to ensure that this is the case. However,
especially with patent problems, it is not always within our control
to know what has or has not been restricted. If you do suspect that
some part of Festival cannot be legally distributed please inform us
so that an alternative may be sought. Festival is only useful if it
is truly free to distribute.
As of 1.4.0 the core distribution (and speech tools) is free. Unlike
previous versions which had a commercial restriction. You are free to
incorporate Festival in commercial (and of course non-commercial
systems), without any further communication or licence from us.
However if you are seriously using Festival within a commercial
application we would like to know, both so we know we are contributing
and so we can keep you informed of future developments. Also if you
require maintenance, support or wish us to provide consultancy feel
free to contact us.
The voices however aren’t all free. At present the US voices, kal and
ked are free. Our British voices are free themselves but they use OALD
which is restricted for non-commercial use. Our Spanish voice is also
so restricted.
Note other modules that festival supports e.g MBROLA and OGI
extensions, may have different licencing please take care when using
the system to understand what you are actually using.
-------------------------------------------------A number of individual files in the system fall under a different
copyright from the above. All however are termed "free software"
but most people.
59
./src/arch/festival/tcl.c
* Copyright (C)1997 Jacques H. de Villiers <[email protected]>
* Copyright (C)1997 Center for Spoken Language Understanding,
*
Oregon Graduate Institute of Science & Technology
See conditions in file. This is the standard TCL licence and hence
shouldn’t cause problems from most people.
./examples/festival_client.pl
# Copyright (C) 1997
# Kevin A. Lenzo ([email protected]) 7/97
See condition in file
./src/modules/clunits/*
./lib/*clunits*
Joint copyright University of Edinburgh and Carnegie Mellon University
Conditions remain as free software like the rest of distribution
./src/modules/hts_engine/*
./lib/hts*
Copyright (C) 2001-2004, Nagoya Institute of Technology
and Tokyo Institute of Technology, all rights reserved.
distriobuted under a similarly free licence as the rest of the system
./lib/festival.el
;;;
Copyright (C) Alan W Black 1996
copyright under FSF General Public Licence
Please also read the COPYING section of speech_tools/README for the
conditions on those files.
Apêndice D
Licença dos Módulos OGI
PLEASE READ THIS LICENSE AGREEMENT CAREFULLY BEFORE USING
ANY OGI-TTS SOFTWARE or DATA FILES.
1. Grant: The Oregon Graduate Institute of Science & Technology
("OGI") hereby grants to you an irrevocable, nonexclusive,
nontransferable, perpetual, royalty-free and worldwide license (the
"License") to use its TTS source code and voice data files (the
"Software") solely for educational, research, personal, or evaluation
purposes, in accordance with Paragraph 2 below and subject to the
terms and conditions of this License Agreement (the "Agreement"). The
License entitles you to use the Software to conduct research or
education in spoken language systems and to create computer or
communications applications, whether implemented in software or
hardware, that enable users to control systems or access information
using spoken utterances. The License expressly precludes you from
using the Software to create works that enable others to create such
applications.
2. Limitations on Use: The License is limited to noncommercial use.
Noncommercial use relates only to educational, research, personal, or
evaluation purposes. Any other use is commercial use. You may not
use the Software in connection with any business activities. You may
distribute and/or allow others to use a) the Software or b) the
applications you create with the Software only if each new user is
bound by the provisions of this Agreement.
3. Copies: You may copy OGI copyrighted material only as
reasonably necessary for your licensed use. You agree to reproduce
61
62
Licença dos Módulos OGI
OGI’s copyright notice on all copies of OGI copyrighted material.
4. Ownership: The Software and the accompanying documentation are
licensed, not sold, to you. The Software is a proprietary product of
OGI and is protected under U.S. copyright law and international treaty
revisions. OGI retains all rights not specifically granted to you
hereunder, including ownership of the Software and all copyrights,
trade secrets, or other intellectual property rights in the Software
and any accompanying information.
5. Publication Credit: You agree to acknowledge OGI’s Center for
Spoken Language Understanding with appropriate citations in any
publication or presentation containing research results obtained in
whole or in part through the use of the Software.
6. Term of License: The License is effective upon receipt by you of
the Software and shall continue until terminated. The License will
terminate immediately without notice by OGI if you fail to comply with
the terms and conditions of this Agreement. Upon termination of this
License, you shall immediately discontinue all use of the Software
provided hereunder, and return to OGI or destroy the original and all
copies of all such Software. All of your obligations under this
Agreement shall survive the termination of the License.
7. Warranty: OGI MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY, USE,
OR PERFORMANCE OF THIS SOFTWARE OR ABOUT ANY CONTENT OR INFORMATION
MADE ACCESSIBLE BY THE SOFTWARE, FOR ANY PURPOSE. THE SOFTWARE IS
PROVIDED "AS IS," WITHOUT EXPRESS OR IMPLIED WARRANTIES INCLUDING, BUT
NOT LIMITED TO, ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR
A PARTICULAR PURPOSE, OR NONINFRINGEMENT WITH RESPECT TO THE SOFTWARE.
OGI IS NOT OBLIGATED TO SUPPORT OR ISSUE UPDATES TO THE SOFTWARE.
8. Limitation on Liability: This Software is provided free of charge
and, accordingly, OGI shall not be liable under any theory for any
damages suffered by you or any user of the Software. UNDER NO
CIRCUMSTANCES SHALL OGI BE LIABLE TO YOU OR ANY OTHER PERSON FOR ANY
DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY
CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL,
WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
ECONOMIC LOSS OR COMMERCIAL DAMAGES ARISING OUT OF THE USE OR
INABILITY TO USE THIS SOFTWARE, EVEN IF OGI SHALL HAVE BEEN INFORMED
OF THE POSSIBILITY OF SUCH DAMAGES, OR FOR ANY THIRD-PARTY CLAIMS.
63
9. Indemnification: You agree to hold harmless, indemnify, and defend
OGI, its Trustees, officers, employees, and agents from and against
any loss, damage, liability, claim of loss, lawsuit, cause of action,
or other claim asserted against them or any of them arising out of, or
in any way connected with, your performance of any activity hereunder.
10. U.S. Government Restricted Rights: Use, duplication or disclosure
by the Government is subject to restrictions set forth as
subparagraphs (a) through (d) of the Commercial Computer-- Restricted
Rights clause at FAR 52.227-19, when applicable, or in subparagraph
(c)(1)(ii) of the Rights in Technical Data and Computer Software
clause at DFARS 252.227-7013, and in similar clauses in the NASA FAR
Supplement. Contractor/Manufacturer is the Oregon Graduate Institute
of Science & Technology, P.O. Box 91000, Portland, Oregon 97291-1000.
11. Export Controls: You agree that the Software will not be shipped,
transferred, or exported into any country or used in any manner
prohibited by the United States Export Administration Act or any other
export laws, restrictions, or regulations.
12. Disputes/Arbitration: This Agreement shall be governed under the
laws of the state of Oregon. Any dispute between the parties arising
out of or relating to this Agreement will be submitted to binding
arbitration in Portland, Oregon, pursuant to the Commercial
Arbitration Rules of the American Arbitration Association, and
judgment on the award may be entered in any court of competent
jurisdiction; provided, however, that either party may seek
preliminary injunctive or other equitable relief pending arbitration
to prevent irreparable harm. The prevailing party in any arbitration
or litigation shall be entitled to recover all reasonable expenses
thereof, including attorney’s fees in connection with such proceedings
or any appeal thereof.
13. Entire Agreement: This Agreement contains the entire agreement
between the parties with respect to the subject matter hereof, and it
shall not be modified or amended except by an instrument in writing
signed by both parties hereto.
Referências Bibliográficas
[1] BARBOZA, LUCAS DE MELO JORGE. Algoritmos de Busca em Codificadores
ACELP. 2002. 187 p. Tese (mestre em Engenharia Elétrica e Computação) – Unicamp – Universidade Estadual de Campinas – Faculdade de Engenharia Elétrica e de
Computação.
[2] THE DEBIAN POLICY MAILING LIST. Debian Policy Manual, version 3.8.3.0
2009-08-16. 134 p. Disponı́vel em
<http://www.debian.org/doc/debian-policy/policy.pdf.gz>. Acesso em: 28 set
2009.
[3] DUTOIT, THIERRY. High-Quality Text-to-Speech Synthesis: an Overview.
Journal of Electrical & Electronics Engineering, Australia: Special Issue on
Speech Recognition and Synthesis, vol. 17 n.0.. 1, pp. 25-37. Disponı́vel em
<http://tcts.fpms.ac.be/publications/regpapers/1997/ieeea97_td.zip>.
Acesso em: 28 set 2009.
[4] EBERLIN, SAMER. O Software Livre como Alternativa para a Inclusão Digital
do Deficiente Visual. Unicamp, Campinas – SP, 2006.
[5] MACON, MICHAEL et al. OGIresLPC: Diphone Synthesizer Using Residual
Exited Linear Prediction. Center for Spoken Language Understanding – Oregon
Graduate Institute of Science and Technology, Portland – USA, 1997. Disponı́vel em:
<http://speech.bme.ogi.edu/publications/macon_OGIresLPC_97.pdf>.
Acesso
em: 28 set 2009.
[6] FILESYTEM
HIERARCHY
STANDARD
GROUP.
Filesystem
Hierarchy
Standard.
RUSSEL,
RUSTY;
QUINLAN,
DANIEL;
YEOH,
CHRISTOPHER;
Editores,
2004,
52
p.
Disponı́vel
em:
<http://www.debian.org/doc/packaging-manuals/fhs/fhs-2.3.pdf.gz>. Acesso
em: 28 set 2009.
[7] SONZA, ANDRÉA POLETTO & SANTAROSA, LUCILA MARIA COSTI. Ambientes Digitais Virtuais: Acessibilidade aos Deficientes Visuais. Disponı́vel em
http://www.cinted.ufrgs.br/renote/fev2003/artigos/andrea_ambientes.pdf.
Acesso em: 28 set 2009.
66
REFERÊNCIAS BIBLIOGRÁFICAS
[8] SPOKEN LANGUAGE TECHNOLOGIES. Spoltech Project. Disponı́vel em
http://catarina.udlap.mx/u_dl_a/tales/documentos/lis/moreno_a_ga/indice.html.
Acesso em 28 set 2009.
[9] FRAZEN, EVANDRO. Estudo e implementação da programação genética para
sı́ntese de fala. Tese de Mestrado, PPGC da UFRJ, Porto Alegre, 2002.
[10] SCHUCK, DIEGO. Framework para Avaliação de Software Leitor de Tela.
Trabalho de Conclusão de Curso. Centro Universitário Feevale, Novo Hamburgo - RJ,
novembro de 2008.
[11] MORENO AZCONA, G. A. Nueva Voz Concatenativa de Difonemas para El
Español Mexicano en Festival. Tese de Licenciatura, Ingenierı́a de Sistemas Computacionais, Departamento de Computación, Electrónica y Mecatrónica, Escuela de
Ingenierı́a y Ciencias, Universidad de Las Américas Puebla, abril de 2008.
Download

Suporte para Fonemas do Português Brasileiro no Sintetizador de