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.