Quanto a construção dos algoritmos e associação dos mesmos para constituir técnicas mais elaboradas para a detecção de silêncio em sistemas de voz sobre IP, a implementação das mesmas foi realizada em duas partes. Na primeira parte das implementações foram feitas a construção dos algoritmos e os testes que podem-se dizer “estáticos”. Isso porque os testes funcionais realizados com áudio foram todos via o uso de arquivos de voz gravados em formato wave17. Já na segunda parte, houve a construção das classes de compressão e os testes funcionais com o uso de áudio em tempo real, com captura, processamento e reprodução instantânea sem armazenamento.
16
UML é uma linguagem para especificar, visualizar, construir e documentar os artefatos de sistemas de software, bem como para modelar negócios e outros sistemas que não sejam de software (LARMAN, 2004).
17
5.3.1 Wave Silence Suppressor
Para a primeira fase das implementações foi construída uma ferramenta denominada para o trabalho como Wave Silence Suppressor.
A Wave Silence Suppressor (Figura 27) recebeu esse nome sugestivo pelo fato do software trabalhar executando simulações dos algoritmos de detecção de silêncio sobre amostras de voz no formato de arquivos wave de forma que apresenta, através de uma interface visual, trechos das amostras que foram suprimidos, bem como o percentual de supressão de silêncio atingido sobre cada amostra.
Figura 27 - Wave Silence Suppression. Fonte: O autor 2009.
Na Figura 27 é apresentado o visual do processamento de uma amostra de voz que constitui uma a contagem de um a dez por uma mulher. Na representação mais acima é apresentada a amostra original, com a presença do ruído ambiente. Na representação mais abaixo, já se tem a mesma amostra, com os períodos de silêncio suprimidos. Nesta segunda
representação não foram aplicados recobrimento e nem ruído de conforto objetivando deixar bem clara, de forma visual, a capacidade de supressão dos algoritmos aplicados.
Por meio desta ferramenta foi possível selecionar a técnica de detecção e supressão de silêncio a ser testada, configurar todos os fatores relevantes à técnica, além da inserção de ruído gerado por um algoritmo de geração de ruído de conforto para fins de melhoria da qualidade subjetiva da voz. Também é possível a aplicação da técnica de recobrimento e fazer a determinação da quantidade de pacotes a ser aplicado, a voz suprimida, por esta técnica.
5.3.2 Classes de supressão de silêncio
A segunda fase de implementações foi a construção das classes bases de supressão de silêncio. Inicialmente foi feita uma modelagem destas classes, utilizando-se uma ferramenta específica para isto, já descrita, e posteriormente a sua construção. A codificação das técnicas foi baseada no que já havia sido feito anteriormente para a Wave Silence Suppression.
Depois de feita a modelagem e a codificação das classes, era necessário fazer alguns testes de validação e ajuste das mesmas. Focando agora em testes a serem realizados com amostras de voz capturadas e reproduzidas em tempo real e não mais arquivos de voz tipo wave, como no primeiro momento, foi construída a ferramenta, denominada para este trabalho como Silence Suppression Tester (Figura 28).
Esta ferramenta utiliza em sua base classes de captura e reprodução de áudio. A estas classes de captura e reprodução foram adicionadas além das classes de detecção e supressão de silêncio, classes de geração de ruído gaussiano, e ainda uma interface para leitura e ajuste de parâmetros.
Essas classes de geração de ruído também fazem parte do processo de desenvolvimento das técnicas de compressão de áudio desenvolvidas. No Apêndice B do trabalho são apresentadas as três classes de geração de ruído branco que foram modeladas e implementadas. Para integração com as ferramentas de teste descritas, foi usado apenas a classe de geração de ruído branco baseado em valores aleatórios com energia média proporcional ao período de silêncio inicial de 200 ms de cada “conversação”.
Como citado na revisão teórica e também como é apresentado nos resultados deste trabalho, a inserção de ruído de conforto, em substituição aos períodos de silêncio suprimidos
do áudio original, podem exercer forte influência na melhoria da qualidade do áudio percebido pelo ouvinte.
Figura 28 - Silence Suppression Tester Fonte: O autor 2009.
A Silence Suppression Tester, por meio de sua interface permite não só fazer ajuste de todos os parâmetros necessários às classes, bem como parâmetros que devem ser genéricos a todo o sistema, como número de bits por amostra e número de amostras por segundo. Também é possível fazer a leitura de parâmetros durante o processamento de cada pacote de áudio em tempo real, tais como o total de pacotes ativos e inativos, o tempo de processamento de cada um e o tempo médio de processamento dos pacotes, além da evolução do limiar de silêncio ao longo do tempo.
Importante salientar que a Silence Suppression Tester é uma ferramenta de teste local. A mesma apenas captura o sinal do microfone do computador e o reproduz nas caixas de som ou fones de ouvido do mesmo, não tendo a finalidade de estabelecer de qualquer tipo de comunicação.
5.3.3 Outras implementações
Dentro do contexto de desenvolvimento de componentes para sistemas de voz sobre IP, ao longo do trabalho foram vislumbradas outras possibilidades de implementações, tanto como a construção de outros algoritmos para este tipo de aplicação, bem como melhorias das técnicas já detalhadas neste capítulo. Em parte, isso fica apresentado como trabalhos futuros. Mas dentre os mesmos, houve a implementação de um buffer de dejitter. Como o mesmo não está diretamente ligado ao objetivo do trabalho, um detalhamento da implementação do mesmo é apresentado no Apêndice C deste trabalho.