English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Riconoscimento vocale in Python utilizzando Google Speech API

Il riconoscimento vocale è una delle funzioni più utili in applicazioni come l'automazione domestica e l'intelligenza artificiale. In questa sezione, impareremo come utilizzare Python e l'API di Speech di Google per completare il riconoscimento vocale.

In questo caso, useremo l'audio fornito dal microfono per il riconoscimento vocale. Per configurare il microfono, ci sono alcuni parametri.

Per utilizzare questo modulo, dobbiamo installare il modulo SpeechRecognition. C'è anche un altro modulo chiamato pyaudio, che è opzionale. Utilizzando questa funzione, possiamo impostare diversi modelli audio.

sudo pip3 install SpeechRecognition
sudo apt-get install python3-pyaudio

Per microfoni esterni o microfoni USB, dobbiamo fornire un microfono accurato per evitare difficoltà. Su Linux, se si digita 'lsusb' per visualizzare le informazioni sui dispositivi USB.

Il secondo parametro è 'dimensione del blocco'. Utilizzando questa opzione, possiamo specificare quanto dati leggere in una volta. Questo sarà un potere di 2, ad esempio 1024 o 2048 ecc.

Dobbiamo anche specificare la frequenza di campionamento per determinare la frequenza con cui i dati registrati vengono elaborati.

Poiché ci possono essere alcuni rumori inevitabili intorno, dobbiamo regolare il rumore ambientale per ottenere un suono accurato.

Passaggi per il riconoscimento della voce

  • Ottieni altre informazioni relative al microfono.

  • Usare la dimensione del blocco, la frequenza di campionamento, l'adattamento del rumore ambientale e altre configurazioni per il microfono.

  • Attendere un po' per ottenere il suono

    • Dopo aver riconosciuto la voce, provare a trasformarla in testo, altrimenti possono verificarsi alcuni errori.

  • Ferma questo processo.

Esempio di codice

import speech_recognition as spreg
# Impostare la frequenza di campionamento e la dimensione dei dati
sample_rate = 48000
data_size = 8192
recog = spreg.Recognizer()
with spreg.Microphone(sample_rate = sample_rate, chunk_size = data_size) as source:
recog.adjust_for_ambient_noise(source)
print('Dì xià yī shì: ')
   speech = recog.listen(source)
try:
   text = recog.recognize_google(speech)
   print('Hai detto: ' + text)
except spreg.UnknownValueError:
   print('Impossibile riconoscere l'audio')
except spreg.RequestError as e: 
   print("Errore di richiesta dal servizio di riconoscimento vocale Google; {}".format(e))

Risultato di output

$ python3 318.speech_recognition.py
Dì qualcosa: 
Hai detto: qui stiamo considerando la notazione asintotica Pico per calcolare il limite superiore 
della complessità temporale, quindi la definizione della notazione big O è come questa
$

Anche senza utilizzare il microfono, possiamo convertire alcuni file audio in input in voce.

Esempio di codice

import speech_recognition as spreg
sound_file = 'sample_audio.wav'
recog = spreg.Recognizer()
with spreg.AudioFile(sound_file) as source:
   speech = recog.record(source)  #usare record invece di listning
   try:
      text = recog.recognize_google(speech)
      print('Il file contiene: ' + text)
   except spreg.UnknownValueError:
      print('Impossibile riconoscere l'audio')
   except spreg.RequestError as e: 
      print("Errore di richiesta dal servizio di riconoscimento vocale Google; {}".format(e))

Risultato di output

$ python3 318a.speech_recognition_file.py 
Il file contiene: pianificazione della domanda in anticipo, nuove tecnologie, ti aiuta anche a progredire nella tua carriera
$