È possibile eseguire la conversione delle note vocali in messaggi di testo con un chatbot Telegram? La risposta è sì e in questo articolo ti spiego come sia possibile in ogni passo!
Immagina di avere un chatbot che, presa in input la nota audio del tuo utente, sia in grado di trasformarla in un messaggio testuale.
Ciao mi chiamo Lorenzo Neri e sono un informatico: realizzo contenuti per aiutare le persone a padroneggiare l’arte del nuovo millennio, ovvero l’informatica!
Tra tutte le potenzialità che ci offre Telegram c’è anche questa…parzialmente poiché ci serve un’aggiunta in più oltre alle API stesse. Ma comunque rientra assolutamente fra le cose che puoi fare con un chatbot Telegram.
Dicevo, che se vuoi eseguire la conversione delle note vocali in messaggi Telegram in sé e i suoi servizi non bastano: serve un’aggiuntina, che dà vita ad una struttura, anzi un’architettura.
Architettura della conversione note vocali in messaggi
Il nostro chatbot Telegram che permette di dare vita a tutto questo, necessità come ti dicevo prima di un’aggiuntina e di un’archiettura a tutti gli effetti: vediamola assieme.

Il primo step, consiste nel ricevere una nota audio dal nostro utente: i famigerati messaggi vocali 😛
A questo punto, Telegram la riceve e la salva sui suoi server.
Il secondo step, è il cuore effettivo del nostro chatbot: attraverso il metodo “getUpdates“ verifichiamo l’arrivo della nota audio al nostro chatbot.
Siccome Telegram salva i messaggi vocali in formato “oga” ci serve uno step in più. Il tuo chatbot dovrà convertire il file scaricato dai server di Telegram in formato “wav”: perché?
Perchè qui, arriviamo alla famosa “aggiuntina”: abbiamo bisogno di Google per convertire la nota audio in testo vero e proprio.
Quindi il quarto step del processo di conversione consiste nel trasformare il file da “oga” a “wav”.
Il quinto è sfruttare lo speech recognizer di Google.
Lo “speech recognizer” è quello strumento in grado di carpire le parole da un file audio
Quindi Google Cloud Speech API è il sistema che ci permette di convertire ciò che dice il nostro utente in un messaggio di testo vero e proprio!
Concludiamo tornando al nostro chatbot Telegram: il sesto step, una volta effettuata la conversione della nota vocale in testo puro, costruiamo un oggetto di tipo “Message” e in ultima battuta lo mandiamo all’utente.
Quindi il processo di conversione note vocali in messaggi o meglio dire l’architettura, è abbastanza semplice. E l’implementazione?
Implementiamo il nostro chatbot Telegram
Arrivati a questo punto, implementiamo il chatbot Telegram con Python:
import telegram
import requests
import speech_recognition as sr
from pydub import AudioSegment
# chatbot token
token="il_tuo_chatbot_token"
# istanzio il chatbot
chatbot=telegram.Bot(token=token)
# ciclo never ending
while True:
latests=[]
try:
latests=chatbot.getUpdates()
except Exception as e:
print(f"Errore di time out: {str(e)}")
pass
last=None
# significa che ho messaggi in memoria
if len(latests)>0:
# prendo l'ultimo messaggio il più recente
last=latests[-1]
# verifico se non ho già risposto al messaggio
file_ultimo= open("./lastanswered.txt","r")
righe=file_ultimo.readlines()
to_answer=False
if len(righe)>0:
if str(last.message.message_id)!=righe[0].strip("\n"):
file_ultimo.close()
file_ultimo= open("./lastanswered.txt","w")
file_ultimo.write(f"{last.message.message_id}\n")
file_ultimo.close()
to_answer=True
else:
file_ultimo= open("./lastanswered.txt","w")
file_ultimo.write(f"{last.message.message_id}\n")
file_ultimo.close()
to_answer=True
# non ho ancora risposto al messaggio, procedo
if to_answer:
if last is not None:
print("Devo rispondere al messaggio")
# verifico che il contenuto sia di tipo "voice"
if hasattr(last.message,"voice"):
# recupero il file dai sever di Telegram
file_url=chatbot.getFile(last.message.voice.file_id).file_path
richiesta = requests.get(file_url)
# lo salvo il locale in formato "oga"
with open(f"./notaaudio.oga", 'wb') as nota_ogg:
nota_ogg.write(richiesta.content)
# lo converto in formato wav
AudioSegment.from_ogg('notaaudio.oga').export('notaaudio.wav', format='wav')
audio_recognizer = sr.Recognizer()
with sr.AudioFile("./notaaudio.wav") as nota_wav:
audio_data = audio_recognizer.record(nota_wav)
# lingua utente: nel caso si voglia modificare la lingua da impostare durante le richieste a Google
language_user_code=last.effective_user.language_code
# prendo la conversione in testo da Google
testo_ottenuto = audio_recognizer.recognize_google(audio_data,language="it-IT")
# Invio una conferma all'utente con un messaggio
chatbot.sendMessage(chat_id=last.message.chat_id,text=f"Dovresti avermi detto qualcosa come {testo_ottenuto}")
Oltre al pacchetto Telegram stesso, è necessario un altro package: “speech_recognition”.
Ti piacerebbe scoprire come realizzare chatbot Telegram per tutti i tuoi progetti?

Scopri il percorso Telegram per il mondo embedded e IoT!
Vediamo in azione il tutto
Una volta lanciato in esecuzione il sistema, basta mandare un audio al nostro chatbot e… voilà!

Oppure puoi clonarti il chatbot da GitHub
Ho voluto realizzare un repository su GitHub dove puoi trovare tutto questo, dotato di un README con spiegazioni aggiuntive. Se vuoi buttarci un occhio lo trovi qui.