Un’altra versione del codice che usa gtts
Da poco abbiamo visto che occorre aggiornare la versione di gtts per far funzionare il nostro codice. Vi rimando a questo articolo per saperne di più.
Oggi vediamo il codice di uno script che ci permette di creare velocemente file audio con la voce di google translate. Ecco il codice:
from gtts import gTTS import os # qui inserisci i file di testo che vuoi trasformare in audio names = ["esempio"] # se vuoi trasformare tutti i file di testo in una cartella togli il seguente commento # names = [f[:-4] for f in os.listdir if f.endswith('.txt')]# qa è una lista di liste; ogni lista comprende stringhe di testo di un file dell'elenco names # qa = [["prima riga del primo file","seconda"...],["prima riga del secondo file"...]...] def genera(): "Genera tanti file, quante sono le righe vuote in ogni file" global qa n = 1 numfiletxt = 0 # per ogni lista di stringhe (una per file) contenuta in qa for q in qa: # per ogni stringa di una lista q for speech in q: # salva un file mp3 tts = gTTS(speech, lang='it') tts.save("./audio/" + names[numfiletxt] + str(n) + ".mp3") n += 1 numfiletxt += 1 def onefile(): "Tutto il testo in un file chiamato onefile.mp3" global qa x = "" # per ogni lista di stringhe (di ogni file) for q in qa: # per ogni stringa in ogni lista (di un file) for speech in q: # accumula le stringhe in x x += speech # crea l'audio delle stringhe tts = gTTS(x, lang='it') # salva il file tts.save("./audio/onefile.mp3") def ascolta(): "Fa partire il lettore audio e legge tutti i file nella cartella audio" n = 1 for file in os.listdir("./audio"): print(n, file) n += 1 for file in os.listdir("./audio"): os.system(os.getcwd() + "/audio/" + file) def menu(): "Crea il menu per la scelta tra creare vari file o un solo file" ans = input("1. Genera tanti file quante sono le righe vuote\n2.Crea un solo file\n3. Ascolta i file nella cartella audio\n>>>") if ans == "1": genera() ascolta() elif ans == "2": onefile() os.system(os.getcwd() + "/audio/onefile.mp3") else: ascolta() def start(): "create qa that contains the list with all the text to transform in mp3" global qa qa = [] try: for name in names: with open(name + ".txt", 'r', encoding='utf-8') as file: qa.append(file.read().split("\n\n")) if not os.path.isdir("audio"): os.mkdir("audio") menu() except FileNotFoundError: print("Non ci sono i file della lista names o non ci sono file di testo") start()