Mostrando postagens com marcador programação. Mostrar todas as postagens
Mostrando postagens com marcador programação. Mostrar todas as postagens

quinta-feira, 27 de fevereiro de 2025

Voltando ao TTS


Há muito tempo atrás (revi o post e na verdade foi há 12 anos) eu escrevi sobre o TTS (clique aqui para ver post), esse filho esquecido da tecnologia. Digo isto pois aqueles que consomem áudio (rádio, podcast, audiolivros) parecem estar satisfeitos e quietos. É um nicho não visto, até porque com a explosão dos podcasts no Youtube não mexeu com esse grupo. Explico o podcast que explodiu no Youtube não é o podcast "raiz", original, que é constituído do áudio somente. Os podcasts do Youtube são na verdade entrevistas em vídeo com a opção eventualíssima de consumir somente o áudio. O podcast original é o áudio puro veiculado via protocolo específico. Por coincidência enquanto eu finalizava este post saiu este artigo do MeioBit (clique aqui) que repete basicamente o que eu afirmei acima.

Mas há os aficionados em audiolivros que é um segmento de tamanho razoável. Para atrair e oferecer um melhor produto, os audiolivros passaram a ser dramatizados, com leitores-narradores, efeitos sonoros, etc. Alguns livros lidos por alguns narradores tornaram-se um produto além do seu conteúdo, marcando definitivamente os leitores-ouvintes. 

Pois bem, um leitor-narrador, a dramatização do audiolivro, efeitos, etc tem custo adicional, logo não iria demorar que se utilizasse ferramentas para geração automática de audiolivros... e com um passo adicional a leitura traduzida de títulos para uma grande maioria de idiomas tudo rapidamente. Semanas atrás li o artigo do Fellipe Gomes no Medium e ele mostrou um código simples em Python pelo qual a partir de um livro em PDF em inglês publicado em um site, o texto é extraído, traduzido do inglês para o português e transformado em áudio. Quando li o texto, o Filipe ganhou tanto minha atenção quanto meu interesse. 

O mais espetacular que o Fillipe utilizou bibliotecas disponíveis que fazem todo o trabalho, bastando colocar no código e chamar suas funções. Foi assim que ele utilizou a deep-translate do Google Translator (sim, tem recursos de IA) com bons resultados em tradução. Só não abusar da API com textos muito longos. E a edge-tts do Microsoft Edge dentre outras. Esta edge-tts permite que você escolha a "voz" da leitura e normalmente disponibiliza uma voz masculina e uma feminina para cada idioma, no mínimo.

Como consumidor de audiolivros pensei: "Porque não transformar alguns livros em PDF em audiolivros" ? Boa oportunidade para mexer no Python. Então adaptei o código original e o rodei via Colab do Google, afinal o meu teste não precisava de grande poder de processamento. Pus uns arquivos PDF no Google Drive. Para o teste ser minimamente interessante codifiquei para que se indique o arquivo PDF, o idioma a ser traduzido e a voz para se usar no áudio. O código completo está disponível aqui no Github (clique aqui).

O resultado ficou maravilhoso na minha avaliação. No teste optei pela geração de somente 1 página dos PDFs para que eles não ficassem excessivamente pesados. Numa situação de obter o áudio de PDF grande a opção é dividir o PDF em partes para a geração não ficar muito demorada. Uma vez de posse dos áudios dá para colocar uma música de fundo... ideias, mas fica para outro momento. No meu teste utilizei publicações que estão em domínio público e recomendo que se mantenha o respeito às direitos de publicação e do autor. Utilizei pedaços pequenos (página 5) de "Animal Farm" - em inglês - (lançado no Brasil como "A Revolução dos Bichos") de George Orwell e "Confissões" - em português - de Agostinho. Ouça e tire suas próprias conclusões:

Animal Farm - texto original em inglês lido com a voz Yan no inglês de Hong Kong


Animal Farm - texto original em inglês lido com a voz Antônio no português do Brasil


Confissões - texto original em português lido com a voz Antoine no francês do Canadá

Confissões - texto original em português lido com a voz Francisca no português do Brasil

Vamos às vantagens e desvantagens desta técnica

Vantagens: 

1. Sim, é possível transformar PDFs, ePUBs, HTMLs e TXTs em áudio;

2. Sim, dá para traduzir razoavelmente bem e ainda escolher a língua e uma "voz" no qual será gerado o áudio.

3. Flexibilidade de obter publicações em vários idiomas e traduzir para em idioma preferido.

Desvantagens:

1. Livros com palavras hifenizadas terá sua leitura atrapalhada, para estes teria que acrescentar um tratamento para palavras com hífen;

2. No teste feito há uma clara limitação de processamento (Colab Google) para maiores demandas teria que fazer em um equipamento com maior poder de processamento.

3. A leitura está bem humana mas ainda há falhas na entonação de palavras complexas e ou falta de naturalidade em algumas partes.

=======

Referências:

Código em Python no Github - https://github.com/ilhado/TextToSpeech

Explosão dos podcasts no Youtube - https://meiobit.com/466053/youtube-mudou-midia-podcast-audio-para-video/

Fellipe Gomes no Medium - https://medium.com/@gomesfellipe

segunda-feira, 10 de junho de 2024

Contando faces de calendários cubos usando Python

Comprei um calendário baseado em 2 cubos para os números e paralelepípedos para os meses, conforme a foto ao lado. Bem prático, bonitinho, bem feito. Comprei este em Parnaíba-PI a um preço muito mais vantajoso do que aqueles vendidos na Tok&Stok (outro lugar em que encontramos esse tipo de calendário. Do nada tive a curiosidade de descobrir qual seria a face que mais seria utilizada em um ano não bissexto e que claro o usuário tivesse o cuidado cotidiano de sempre mudar as faces. 

Pensei que fazendo em Python seria relativamente simples. Mas apanhei muito para uma tarefa bem simples, acho que por isso não tenho muito futuro como programador. Decidido o projeto, escolhi fazer no Google Colab e usar estruturas dicionário do Python para contar as ocorrências. Ou seja decisões ruins sucessivas. Abandonei as estruturas dicionário pois o comportamento e funções para usá-las não foram bem assimiladas. Então optei por usar vetores bidimensionais. Uma dimensão guardaria o nome da face, e a outra acumularia as ocorrências. 

Lembrando que são 2 cubos. O cubo 1 contém os números 0, 1, 2, 3, 4, 5 e o cubo 2 contém os números 0, 1, 2, 6 (que também ser para o dígito 9), 7 e 8. Então declarei dois vetores bidimensionais e 3 funções. Uma para contar os meses de 31 dias, uma para contar os meses de 30 dias e uma outra para contar o fevereiro. Essas três invocam uma função contadora que recebe um valor referente a cada dia específico e incrementa as faces com compõem o número. Os valores são acumulados e ao final tem o quantitativo. 

Ideia pronto então ora de por a mão na massa, digitei o código e não consegui depurar adequadamente no Colab, precisava acompanhar os valores das variáveis para confirmar se estava fazendo certo e mesmo importando o pacote ipdb a experiência não foi boa. Abandonei então o Colab, baixei o VSCode e seus componentes e finalmente pude rodar e depurar o programa que entregou o resultado correto.

Com o resultado em mãos percebi que tinha deficiências para apresentar o resultado, a saída do print é bem simples, servindo mais para saber o resultado estava correto, daí comecei a pesquisa se havia uma forma mais elaborada de apresentar o resultado seja via uma imagem seja via integração HTML. Para esta última tem a opção do PyScript e/ou Flask, mas eu vou levar muito tempo para fazer isso.

Então para não ficar no básico, vamos apelar para boa e sólida matplotlib e fazer o gráfico das frequências de cada face. Só importar a biblioteca no VSCode, instalar e fazer as chamadas e voilà !


Mas eis a saída do print:


A face campeã é o "1" do cubo 1 e se o ano for bissexto há um empate entre o 1 e 2 do cubo 1.

Porém o resultado não é definitivo pois se pode forçar que uma determinada face seja mais utilizada nos dias em os dígitos 0, 1 e 2 são utilizados, pois ambos os cubos possuem esses dígitos. O código disponibilizado não contabiliza essa possibilidade.

O código está disponível no GitHub.

quarta-feira, 27 de abril de 2016

Fatores econômicos como causa de um ambiente político instável - Gerador Automático


          Assim mesmo, o acompanhamento das preferências de consumo causa impacto indireto na reavaliação dos procedimentos normalmente adotados. Desta maneira, a hegemonia do ambiente político estende o alcance e a importância do retorno esperado a longo prazo. Do mesmo modo, a crescente influência da mídia assume importantes posições no estabelecimento dos métodos utilizados na avaliação de resultados. Percebemos, cada vez mais, que a percepção das dificuldades exige a precisão e a definição dos níveis de motivação departamental. Ainda assim, existem dúvidas a respeito de como a consolidação das estruturas auxilia a preparação e a composição das formas de ação. 

          Não obstante, a adoção de políticas descentralizadoras promove a alavancagem dos paradigmas corporativos. Pensando mais a longo prazo, a contínua expansão de nossa atividade afeta positivamente a correta previsão dos conhecimentos estratégicos para atingir a excelência. O empenho em analisar a necessidade de renovação processual nos obriga à análise das regras de conduta normativas. 

          A certificação de metodologias que nos auxiliam a lidar com a execução dos pontos do programa cumpre um papel essencial na formulação dos relacionamentos verticais entre as hierarquias. No entanto, não podemos esquecer que o julgamento imparcial das eventualidades não pode mais se dissociar do sistema de formação de quadros que corresponde às necessidades. A nível organizacional, o consenso sobre a necessidade de qualificação garante a contribuição de um grupo importante na determinação das novas proposições. As experiências acumuladas demonstram que o surgimento do comércio virtual apresenta tendências no sentido de aprovar a manutenção das direções preferenciais no sentido do progresso. 

---------------------------------------------------------------------------------------

Você gostou do texto acima ? Entendeu ? Não ? Na verdade o texto foi gerado pelo Fabuloso Gerador de Lero Lero, de autoria do Padre Levedo (alcunha do autor). Nos testes que fiz o Fabuloso Gerador de Lero Lero perde para o Fabuloso Gerador de Lero Lero Filosófico. Este último é muito mais convincente em suas produções. Tanto um quanto o outro estão disponíveis em licença "creative commons" e os códigos fontes estão disponíveis para entender como é feita a produção do texto. Indo um pouco adiante descobri que há outros geradores automáticos:

Abaixo um exemplo de um artigo gerado pelo Fabuloso Gerador de Lero Lero Filósofico:

          Numa série de artigos publicados entre 1843 e 1844, M.Hess sustenta que a infinita diversidade da realidade única tem como componentes elementos indiscerníveis da velha terra grega fraturada. Por outro lado, a complexidade dos estudos efetuados cumpre um papel essencial na formulação da fundamentação metafísica das representações. Assim mesmo, a estrutura atual da ideação semântica exige a precisão e a definição do sistema de conhecimento geral. No entanto, não podemos esquecer que o desenvolvimento da consciência coletiva virtualizada consistiria primeiramente na autoridade das posturas dos filósofos divergentes com relação às atribuições conceituais. 

          Do mesmo modo, a indeterminação contínua de distintas formas de fenômeno garante a contribuição de um grupo importante na determinação das novas teorias propostas. Segundo a tese da eliminabilidade, o Cristianismo entendido como degradação, na perspectiva universal do polêmico anticristo nietzscheano, não assume importantes posições no estabelecimento da sensibilia dos não-sentidos. Nunca é demais lembrar o peso e o significado destes problemas, uma vez que o conceito de diáthesis e os princípios fundamentais de rhytmos e arrythmiston não causa impacto indireto na reavaliação do sistema de formação de quadros que corresponde às necessidades lógico-estruturais. Se a própria desterritorialização relativa se projeta sobre o início da atividade geral de formação de conceitos demonstra a irrefutabilidade das vantagens dos paradigmas filosóficos. A proposta de Quine para este impasse se restringe a questionar o desafiador cenário globalizado não oferece uma interessante oportunidade para verificação dos relacionamentos verticais entre as hierarquias conceituais. 

          Se estivesse vivo, Foucault diria que o Übermensch de Nietzsche, ou seja, o Super-Homem, tem que apresentar uma homogenidade em relação aos extremos do processo de comunicação como um todo. Pretendo demonstrar que a expansão dos mercados mundiais pode nos levar a considerar a reestruturação de alternativas às soluções ortodoxas. Neste sentido, existem duas tendências que coexistem de modo heterogêneo, revelando a hegemonia do ambiente político representa uma abertura para a melhoria das relações entre o conteúdo proposicional e o figurado. Segundo Heidegger, o sujeito constituinte envolvido não afeta positivamente a correta previsão das convicções empiristas. 

          É lícito um filósofo restringir suas investigações ao mundo fenomênico, mas o aumento do diálogo entre os diferentes setores filosóficos talvez venha a ressaltar a relatividade de universos de Contemplação, espelhados na arte minimalista e no expressionismo abstrato, absconditum. Se, para Sócrates, o homem não era mais que sua alma, podemos sustentar que a crescente influência da mídia prepara-nos para enfrentar situações atípicas decorrentes de todos os recursos funcionais envolvidos.