Como criar audiolivros usando python

Como criar audiolivros usando python
Como você já deve saber, o Python é uma ferramenta de programação maravilhosa, porque nos permite fazer praticamente qualquer coisa! Isso também significa que podemos criar nosso próprio software. Neste tutorial, aprenderemos a sintetizar a fala, fazer com que o Python leia PDFs, até os traduza para nós e depois os leio para nós para nós.

O que vamos fazer aqui é fazer Python nos ler um PDF e traduzi -lo para nós. Primeiro, tentaremos criar um audiolivro inglês. Como tal, a primeira coisa que devemos fazer logicamente é extrair o texto do PDF. Para isso, usamos o módulo conhecido como Tika. Como sempre, para instalar Tika, um evoca Pip.

pip install tika

Tika é um módulo usado para detecção e extração de conteúdo. Depois de instalado, precisamos importar o objeto de analisador.

do analisador de importação tika

Em seguida, precisamos do método From_File (), que leva dois argumentos ao máximo. O primeiro argumento é o nome do arquivo PDF, e o segundo argumento é chamado adicional, que solicita o tipo de dados procurados. Deixar o campo adicional em branco solicitará tudo, de metadados ao conteúdo. Aqui, a meta retorna os metadados, o texto retorna o texto e o param xmlContent retorna o conteúdo XML.

crua = analisador.From_File ('Comentário.pdf ')

Depois de termos os dados, precisamos extrair apenas o texto. Fazemos isso selecionando o "conteúdo" do RAW.

RAW_TEXT = RAW ['Content']

O problema com o tika é que ela pode travar quando há muitas páginas. Então, vamos usar outro método também. Se o PDF for curto e doce, por todos os meios, use Tika. No entanto, você também pode usar o módulo PYPDF2.

pip install pypdf2

Então, vamos começar:

Importar PypDF2

Primeiro, abrimos o documento de interesse e lemos dele usando o método open () e a classe pdffileReader (). O método open () leva dois argumentos aqui: o primeiro é o nome do arquivo a ser lido, e o segundo é o modo de ler em. Aqui, “RB” significa ler binário. A classe PdffFileReader assume o pdf_document.

pdf_document = aberto ("Bem -vindo.pdf "," rb ")
pdf_document_read = pypdf2.PdffileReader (pdf_document)

Em seguida, coletamos o número total de páginas usando o método Numpages. Faremos isso, já que criaremos um loop for que vai da página 1 para a última página, lendo cada página à medida que avança.

número_of_pages = pdf_document_read.numpages

Em seguida, começamos um loop para contar cada página.

para página em intervalo (1, número_of_pages):

Em seguida, precisamos obter uma página usando o método getpage () e extrair o texto de dentro usando o método extraCTTEXT ().

One_Page = pdf_document_read.getPage (página)
RAW_TEXT = ONE_PAGE.ExtractText () importar pyttsx3

Primeiro inicializamos o módulo usando init ().

motor = pyttsx3.iniciar()

Podemos definir as vozes, volume e classificar usando o motor.getProperty (). O setProperty () leva dois valores: a propriedade para mudar e seu valor. Nesse caso, eu definei as vozes para uma mulher (vozes [1].id), com volume máximo (1) e uma taxa de 128.

Voices = motor.getProperty ('Voices')
motor.SetProperty ('Voice', Voices [1].eu ia)
volume = motor.getProperty ('volume')
motor.setProperty ('volume', 1.0)
taxa = motor.getProperty ('taxa')
motor.SetProperty ('Taxa', 128)

Então usamos o motor.diga () para sintetizar a fala e obter o texto lido em voz alta.

motor.Diga (RAW_TEXT)
motor.runandwait ()

O código completo seria algo assim:

Importar PypDF2
pdf_document = aberto ("Bem -vindo.pdf "," rb ")
pdf_document_read = pypdf2.PdffileReader (pdf_document)
número_of_pages = pdf_document_read.numpages
para página em intervalo (1, número_of_pages):
One_Page = pdf_document_read.getPage (página)
RAW_TEXT = ONE_PAGE.ExtractText ()
importar pyttsx3
motor = pyttsx3.iniciar()
Voices = motor.getProperty ('Voices')
motor.SetProperty ('Voice', Voices [1].eu ia)
volume = motor.getProperty ('volume')
motor.setProperty ('volume', 1.0)
taxa = motor.getProperty ('taxa')
motor.SetProperty ('Taxa', 128)
motor.Diga (RAW_TEXT)
motor.runandwait ()

No exemplo anterior, tivemos um texto em inglês falado em inglês. Agora, tentaremos traduzir o texto em outro idioma e obter o texto traduzido lido em voz alta. Nos casos ao traduzir um texto, a primeira parte do código é semelhante à seção anterior. O código até e incluindo o código PYPDF2 é necessário. No entanto, uma vez que o loop for iniciado, mudaremos um pouco o código. Aqui, precisamos adicionar a tradução e fazê -lo falar com o sotaque do idioma de destino.

Primeiro, instale GoogleTrans.

PIP Instale GoogleTrans

Agora, vamos começar a traduzir o texto.

do BOOGLETRANS IMPORT TRADURADOR

Em seguida, chamamos o tradutor ().

tradutor = tradutor ()

Usamos o método traduzi (). Aqui, inserimos o primeiro argumento - o texto a ser traduzido - e o idioma de destino - o idioma no qual o texto deve ser convertido. Nesse caso, escolhi traduzir o texto para o francês (ou então 'fr').

traduzido = tradutor.traduzir (raw_text, dest = 'fr')

Depois de traduzirmos o texto, precisamos extrair a parte do texto.

traduzido_2 = traduzido.texto

Este último traduzirá e armazenará o texto traduzido para a variável traduzida_2. Agora, precisamos de um módulo que traduzirá e armazenará o texto falado em um mp3. Para isso, precisamos de GTTS e PlaySound:

pip install gtts
Pip Install PlaySound
Importar GTTS
De PlaySound Import PlaySound

Os GTTs.A classe gtts () tem alguns argumentos. No entanto, aqui vamos usar apenas dois argumentos. O primeiro argumento é o texto a ser lido, e o segundo é o idioma para ler o texto em. Nesse caso, escolhi ler o texto em francês (FR). A razão pela qual estamos usando o GTTS aqui em vez de pyttsx3 é por causa dos grandes sotaques que acompanham o parágrafo de leitura. Então, quando um texto é lido em francês, com GTTS, parecerá que um francês está lendo o texto em vez de um falante nativo de inglês.

texto = gtts.gtts (traduzido_2, lang = "fr")

Em seguida, salvamos o texto falado em um mp3. Nesse caso, escolhi nomear texto.mp3:

texto.salvar ("texto.mp3 ")

Para reproduzir o MP3 salvo, usamos PlaySound ():

PlaySound ("texto.mp3 ")

O código completo seria algo assim:

Importar PypDF2
pdf_document = aberto ("Bem -vindo.pdf "," rb ")
pdf_document_read = pypdf2.PdffileReader (pdf_document)
número_of_pages = pdf_document_read.numpages
para página em intervalo (1, número_of_pages):
One_Page = pdf_document_read.getPage (página)
RAW_TEXT = ONE_PAGE.ExtractText ()
do BOOGLETRANS IMPORT TRADURADOR
tradutor = tradutor ()
traduzido = tradutor.traduzir (raw_text, dest = 'fr')
traduzido_2 = traduzido.texto
Importar GTTS
De PlaySound Import PlaySound
TTS = GTTS.gtts (traduzido_2, lang = "fr")
TTS.salvar ("texto.mp3 ")
PlaySound ("texto.mp3 ")