10 - Riconoscimento vocale


ATTENZIONE: i caratteri cancelletto (#) e dollaro ($) sono considerati caratteri speciali in quanto definiscono i calldata e le transfer property. Se è necessario inserire uno di questi caratteri, in un qualsiasi campo, occorre specificarli in coppia, ad esempio "##" oppure "$$".

GetAlfaNumCode (CGetAlfaNumCode)

Richiede al chiamante, tramite riconoscimento vocale, il codice di identificazione alfanumerico, eseguendo un riconoscimento vocale per ogni carattere del codice. In alternativa è in grado di riconoscere anche i toni DTMF. E' necessario che sul sistema sia stato installato un motore di riconoscimento vocale SAPI compatibile, con relative licenze, non fornito con il Messenger oppure un motore integrato (disponibile solamente utilizzando LightHouse).

Parametri di Configurazione

ParametriDescrizione
Tipo di motore di sintesi vocale

Selezionare il tipo di motore tra i seguenti:

Directory contenente i file wav/aviIndicare la directory, o selezionare dalla lista, tramite il pulsante Browse, in cui sono contenuti i messaggi che il sistema deve riprodurre al chiamante. La tabella sotto Messaggi Disponibili riporta l'elenco dei messaggi utilizzabili.
MotoreSelezionare il motore di riconoscimento vocale da utilizzare dal sistema. Nota: il suo valore dipende dai motori installati nel sistema.
Abilita Beep di avviso ad inizio riconoscimentoIndicare se deve essere emesso un breve segnale acustico prima di ogni fase di riconoscimento vocale.
Termina riconoscimento su ricezione DigitIndicare se la fase di riconoscimento può essere interrotta dalla pressione di un tasto dal parte dell'utente. Se abilitato, i tasti numerici entrano a far parte del codice, mentre asterisco ( * ) e cancelletto (#) concludono l'acquisizione dei caratteri (fine del codice).
Tempo massimo di attesa (secondi)Se è stato selezionato un motore SAPI, specificare il tempo massimo, in secondi, di ogni fase di riconoscimento vocale. Valore predefinito: 20 secondi.
Massimo silenzio iniziale (secondi)Se è stato selezionato un motore integrato, specificare il periodo massimo di silenzio, in secondi, che il riconoscimento attende, prima che l'utente cominci a parlare, prima di uscire per fallimento.  Valore predefinito: 20 secondi.
Soglia di affidabilità
(0-100)
Indicare un valore tra 1 e 100 che indica il grado di sicurezza con cui un carattere deve essere riconosciuto per poter essere considerato valido. Valori alti indicano maggiore precisione e, quindi, maggior probabilità di nessun riconoscimento. Valore predefinito: 70.
Numero massimo tentativiNumero massimo di tentativi in caso di codice non valido (nessuna digitazione).
Lunghezza massima dei codiciNumero massimo di digit del codice utente. Il tasto Assegna Valore consente di salvare il valore indicato in una costante, oppure recuperarlo da una Transfer Property o un Call Data.
File Grammatica da utilizzareNome del file contenente la grammatica da utilizzare. Il tasto Assegna Valore consente di salvare il valore indicato in una costante, oppure recuperarlo da una Transfer Property o un Call Data.
Nome Transfer PropertySelezionare la Transfer Property in cui viene salvato il codice acquisito.
Servizio successivo se riconoscimento validoSolamente configurando il Servizio tramite Messenger Configurator. Selezionare dall'elenco il servizio da attivare nel caso di codice riconosciuto e confermato dall'utente.
Servizio successivo per mancato riconoscimentoSolamente configurando il Servizio tramite Messenger Configurator. Selezionare dall'elenco il servizio da attivare nel caso di codice NON riconosciuto o NON confermato dall'utente.

Messaggi Disponibili

Nome FileMessaggio
IntroMessage.wavMessaggio di accoglienza con istruzioni per l'inserimento del proprio codice.
CharNotRecognized.wavComunica che il riconoscimento del carattere corrente non è andato a buon fine.
RecognizedCodeIs.wavMessaggio del tipo: "Il codice riconosciuto è...".
confirm.wavMessaggio del tipo: "Premere 1 per confermare, 0 per riprovare...".
RepeatCode.wavInvita l'utente a riprovare il riconoscimento del codice dall'inizio.
  

Grammatica

Il file contenente la definizione della grammatica utilizzata per il riconoscimento del codice dell'utente ha la struttura di un file INI con le seguenti quattro sezioni:

  • La sezione [Grammar] contiene i parametri generali della grammatica, attualmente il solo nome.
  • La sezione [List] contiene le associazioni tra le parole che il sistema deve essere in grado di riconoscere ed il relativo carattere da aggiungere al codice nel caso che il sistema riconosca una certa parola.
  • La sezione [Stop] indica le parole chiave che il sistema deve considerare come conclusione del codice; utili nel caso in cui i codici cliente non siano tutti della stessa lunghezza.
  • La sezione [ConfirmOptions] contiene le opzioni ammesse per la conferma del codice riconosciuto dal sistema;
    • la chiave "Confirm" indica la parola che deve essere pronunciata dal cliente per confermare il codice riconosciuto
    • la chiave "Cancel" indica la parola per annullare il riconoscimento e introdurre il codice dall'inizio.

Esempio File Grammatica

[Grammar]
Type=AlfaCode
[List]
0=0
1=1
2=2
3=3
4=4
5=5
6=6
7=7
8=8
9=9
uno=1
due=2
tre=3
quattro=4
cinque=5
sei=6
sette=7
otto=8
nove=9
zero=0
a=A
bi=B
ci=C
di=D
e=E
effe=F
gi=G
acca=H
i=I
elle=L
emme=M
enne=N
o=O
pi=P
qu=Q
erre=R
esse=S
ti=T
u=U
vu=V
zeta=Z
x=X
y=Y
k=K
j=J
w=W
ics=X
ipsilon=Y
cappa=K
vudoppia=W
doppiavu=W
gei=J
ilunga=J
igreca=Y
Ancona=A
Bologna=B
Catania=C
Domodossola=D
Empoli=E
Firenze=F
Genova=G
Hotel=H
Imperia=I
Livorno=L
Milano=M
Napoli=N
Otranto=O
Palermo=P
Quadro=Q
Roma=R
Savona=S
Torino=T
Urbino=U
Verona=V
Zagabria=Z
[Stop]
stop
end
[ConfirmOptions]
Confirm=corretto
Cancel=annulla

SpeechToText (CSpeechToText)

Questo blocchetto permette di convertire l'audio del chiamante (parlato) in testo tramite il motore di riconoscimento vocale di Google (Google Speech API). Le sue principali funzionalità sono le seguenti:

  • Utilizzare TTS o WAV per i messaggi (sia per quelli di invito a pronunciare la propria scelta sia per quello di mancato riconoscimento).
  • Abilitare la funzionalità di bargeIn, cioè far partire il riconoscimento durante il play del messaggio (indipendentemente se si usa TTS o WAV).
  • Restituire l’accuratezza del riconoscimento. Il motore di STT ritorna, insieme alla stringa riconosciuta anche un valore tra 0 e 100 che rappresenta la percentuale di sicurezza con cui il testo è stato riconosciuto. Nella scheda Salvataggio scelta è possibile salvare l'accuratezza (definita anche confidence) in una transfer property o in un calldata.
  • Abilitare il riconoscimento di espressione singola (single utterance). Nel caso ci si aspetti che l’utente pronunci una singola parola breve, ad esempio un si o un no, abilitare questo parametro migliora la capacità di riconoscimento del motore stesso.
  • Passare al motore di STT una serie di parole attese, tramite una stringa in cui i vari vocaboli sono separati da "|" (pipe). Il motore non si limita a riconoscere solo le parole contenute nella lista, ma vengono usate per migliorare la capacità di riconoscimento. Ad esempio: “si|no|abbastanza|poco|…..”.
  • In caso di errore di riconoscimento il blocchetto salva in una Transfer Property (__RecognizeErrorCode__) il codice di errore ritornato dall’engine.
  • Il testo può essere salvato in una transfer property o in un calldata, per potere essere analizzato/elaborato successivamente da ulteriori blocchetti impostati nel flusso della chiamata.
  • È stata aggiunta la scheda Parametri aggiuntivi per permettere la definizione dei parametri addizionali relativi al passaggio delle API Google dalla versione 1 alla 2.
     

NOTA BENE: quando si abilita il parametro Single Utterance (vedere casella Abilita riconoscimento espressione singola nella scheda Motore STT), l’engine Google prevede di ricevere l’audio in un tempo relativamente breve (massimo 10/15 secondi),  dopodichè termina la fase di riconoscimento. Questo può essere un problema se si abilita anche la modalità BargeIn (vedere casella Abilita riconoscimento durante la play nella scheda Motore STT) con un messaggio di invito con un tempo che si avvicina o supera i 10 secondi.  In questo caso se l’utente aspettasse la fine del messaggio prima di pronunciare la sua scelta, l’engine Google sarebbe già uscito dalla fase di riconoscimento e non restituirebbe alcun valore. Quindi è raccomandabile di non impostare il parametro Single Utterance contemporaneamente al parametro BargeIn se il messaggio di invito dura più di due secondi.

Parametri di Configurazione

Proprietà

Cliccando sulla funzionalità Proprietà del blocchetto sono visualizzate le seguenti schede, che sono differenti rispetto alla scelta di utilizzare il TTS piuttosto che il file WAV nella scheda Generale:

Scheda Generale

STT_skGenerale.jpg

Selezionare la casella Utilizzare TTS invece che messaggi WAV per indicare che si vuole usare il TTS. In questo caso viene visualizzata anche la scheda Motore TTS per l'impostazione dei parametri del relativo motore. Inoltre occorre indicare anche il numero massimo di tentativi disponibili in caso di mancato riconoscimento.

L'elenco dei campi visualizzati è il seguente:

ParametriDescrizione
Utilizzare TTS invece che messaggi WAVSelezionare la casella per indicare che si vuole usare il TTS (Text-To-Speech). In questo caso viene visualizzata anche la scheda Motore TTS per l'impostazione dei parametri del relativo motore.
Numero massimo di tentativiIndicare il numero di tentativi consentiti al chiamante, se la fase di riconoscimento non avesse successo. Valore predefinito: 2.

Scheda Messaggi per TTS

STT_skMessaggiTTS.jpg

L'elenco dei campi visualizzati è il seguente:

ParametriDescrizione
Testo messaggio inizialeIndicare nel campo il testo del messaggio introduttivo.
Testo messaggio di erroreIndicare il messaggio da riprodurre in caso di mancato riconoscimento.

Scheda Messaggi per WAV

STT_skMessaggiWav.jpg

Caricare e selezionare dalla lista i messaggi audio da riprodurre all'utente, utilizzando i tasti Nuovo, Modifica e Cancella per selezionare e impostare il tipo di messaggio da riprodurre all'utente tra i seguenti:

  • File
  • Numero
  • Importo
  • Sequenza di caratteri
  • Lista formattata
  • Data/Ora
  • Data/Ora attuale
  • Data/Ora del file
  • Ordinale

     

Scheda Motore TTS

STT_skMotoreTTS.jpg

Impostare il campo seguente:

ParametroDescrizione
Engine NameSelezionare il motore di sintesi da utilizzare. L'elenco dei motori disponibili corrisponde a quelli definiti nel server TTSASR.

Scheda Motore STT

STT_skMotoreSTT.jpg

Impostare i campi seguenti:

ParametroDescrizione
Motore di riconoscimento vocale da utilizzareSelezionare il motore di riconoscimento da utilizzare. Al momento l’unico motore disponibile e configurabile è Google Speech API.
Codice LinguaIndicare il codice della lingua, in formato BCP-47, da utilizzare per il riconoscimento. Valore predefinito: it-IT.
Termina riconoscimento su ricezione digit dopoSelezionare per abilitare l'interruzione della play del messaggo di invito a parlare, sia riprodotto da file che tramite TextToSpeech. il tempo, espresso in millisecondi, indica dopo quanto deve essere terminata la fase di riconoscimento in seguito alla pressione di un digit dda parte dell'utente.
Abilita beep di avviso ad inizio riconoscimentoSelezionare per abilitare il suono di avviso nel momento di inizo del riconoscimento.
Abilita riconoscimento durante la play (BargeIn)Selezionare se si vuole far partire il riconoscimento dell'audio già durante la riproduzione.
Restituisce l'accuratezza del riconoscimentoSelezionare se si vuole restituire al Messenger iI punteggio di confidenza del riconoscimento per confrontare l'accuratezza relativa di più alternative.
Abilita riconoscimento espressione singolaSelezionare si si vuole migliorare la modalità di riconoscimento di singoli comandi o parole, oppure di frasi brevi e concise, ad esempio o no.
Tempo massimo di attesa

Indicare il tempo massimo, espresso in secondi, consentito al chiamante per effettuare la sua scelta vocale. Valore predefinito: 30 secondi.

NOTA BENE: questo valore ha SEMPRE la precedenza sui parametri aggiuntivi (SpeechEndTimeout e SpeechStartTimeout), quindi la fase di riconoscimento termina dopo il numero di secondi impostato in tale parametro anche se l’utente sta ancora parlando. Questo valore deve essere sempre  superiore ai valori indicati nei parametri aggiuntivi.

Soglia di affidabilitàIndicare il livello di affidabilità, tra 0 e 100, da raggiungere per considerare il riconoscimento valido. Valore predefinito: 70.
SuggerimentiDa utilizzare per migliorare la capacità di riconoscimento di parole attese. Indicare una serie di parole separate dal carattere "|" (pipe), ad esempio si|no|abbastanza|poco|.
Valore ParametriOpzionale. È possibile indicare un valore numerico dato dalla combinazione dei valori del BargeIn (1) , accuratezza (2), espressione singola (4), che corrispondono alle caselle sopra visualizzate. Espressi in questo modo possono essere configurati tramite una transfer property creata da blocchetti precedenti. Il valore di questo campo e i checkbox sono combinati, quindi se come parametro avanzato si imposta, ad esempio, il valore 4 (abilita espressione singola) e poi si selezionano le caselle Abilitazione BargeIn e Restituisci accuratezza, il valore finale che verrà inviato al motore di STT sarà 7.

Scheda Parametri aggiuntivi

In questa scheda è possibile indicare alcuni parametri aggiuntivi relativi all'aggiornamento di versione delle API Google di riconoscimento vocale (da V1 a V2).

STT_skParAgg.jpg

I parametri aggiuntivi predefiniti sono i seguenti:

ParametroDescrizione
ModelIndicare il modello di apprendimento automatico interessato. Il modello consigliato è telephony (modello più accurato per trascrivere l'audio telefonico).
SpeechEndTimeoutIndicare il timeout, espresso in secondi, che interrompe la comunicazione con l'utente se l'audio vocale non inizia entro il periodo stabilito, cioè se la pausa iniziale supera la durata del timeout. 
SpeechStartTimeoutIndicare il timeout, espresso in secondi, che interrompe la comunicazione con l'utente se l'audio vocale non riprende entro il periodo stabilito, cioè se c'è un pausa tra due frase che supera la durata del timeout. 
StopAsFirstIsFinalIndicare se dopo il primo riconoscimento parziale l’engine si deve fermare dal riconoscimento (true) o continuare fino al timeout impostato (default: false). Questo parametro, se presente, sovrascrive il valore impostato nella opzione Abilita riconoscimento espressione singola presente sulla vecchia scheda.
EnableAutomaticPunctuationSe si abilita questa impostazione (true), l'applicazione deduce automaticamente la presenza di punti, virgole e punti interrogativi nella trascrizione dei dati audio e li aggiunge alla trascrizione.
ProfanityFilterSe si abilita questa impostazione (true), l'engine tenterà di rilevare le parole volgari e, nel caso, restituire solo la prima lettera seguita da asterischi nella trascrizione dei dati audio (ad esempio, c***). Se questo campo viene impostato false o non viene configurato, l'engine non effettuerà il filtraggio dell'audio.

Scheda Salvataggio scelta

WAV_skSalva.png

Impostare i campi seguenti:

ParametroDescrizione
Salva frase riconosciuta in 
Nome Transfer PropertySelezionare dall'elenco la transfer property in cui salvare il testo convertito (in caso di riconoscimento con successo) o il digit premuto.
CallDataIndicare il CallData in cui salvare il testo convertito (in caso di riconoscimento con successo) o il digit premuto.
Salva confidence in 
Nome Transfer PropertySelezionare dall'elenco la transfer property in cui salvare il valore del livello di accuratezza (confidence).
CallDataIndicare il CallData in cui salvare il valore del livello di accuratezza (confidence).

Port di Uscita

output_port.jpg

Le funzionalità dei Port di Uscita del blocchetto sono le seguenti :

ParametroDescrizione
FailureIndicare il servizio successivo da attivare nel caso in cui il motore non riconosca l'audio e non sia premuto dal chiamante alcun digit.
Digit DetectedIndicare il servizio successivo da attivare nel caso in cui il riconoscimento sia interrotto dalla pressione di un digit.
SuccessIndicare il servizio successivo da attivare nel caso il riconoscimento abbia successo.

Transfer Property

Oltre alla Transfer Property definita in fase di configurazione, il blocchetto crea le due seguenti Transfer Property di sistema che possono essere eventualmente usate dai blocchetti successivi:

ParametroDescrizione
__RecognizeResult__Contiene l’esito della richiesta di riconoscimento.
_ASR_Source

Contiene la sorgente dell’informazione contenuta nella Transfer Property e nel CallData definiti in configurazione. I valori possibili sono:

  • “” (stringa vuota): nel caso in cui non sia riconosciuto l'audio e non sia rilevato alcun digit.
  • “DTMF”: nel caso sia rilevato un digit che interrompe la fase di riconoscimento. La Transfer Property e il Call Data, eventualmente configurati come variabili di uscita, conterranno il digit ricevuto.
  • “STT”: nel caso il motore di riconoscimento restituisca un qualsiasi valore. La Transfer Property e il Call Data, eventualmente configurati come variabili di uscita, conterranno il testo riconosciuto.

VoiceMenu (CVoiceMenu)

Presenta un menu di opzioni e, in base alla scelta del chiamante, effettuata tramite il riconoscimento vocale, attiva il servizio associato. Permette di configurare la sequenza di messaggi (file wav/avi, numeri, date, ecc.) da riprodurre all'utente per invitarlo a segnalare al sistema la sua scelta.

E' inoltre possibile, in caso di nessuna scelta o di scelta errata, configurare un servizio predefinito. Questo servizio richiede che sul sistema sia stato installato un motore di riconoscimento vocale SAPI compatibile, con relative licenze, non fornito con il Messenger oppure un motore integrato (solo disponibile utilizzando LightHouse).

Parametri di Configurazione

ParametriDescrizione
Tipo di motore di sintesi vocale

Selezionare il tipo di motore tra i seguenti:

Usa un dizionario interno al motoreSe è stato selezionato un motore di sintesi integrato, è possibile abilitare l'uso di un dizionario interno, specificandone il folder e il nome. 
Lista dei messaggi

Indicare la lista dei messaggi da riprodurre alla chiamante per guidarlo nella scelta. Utilizzare i tasti Nuovo, Modifica, Cancella e le frecce di ordine per selezionare il tipo di messaggio tra i seguenti:

  • File WAV/AVI
  • Numero
  • Importo
  • Sequenza di caratteri
  • Lista formattata
  • Data/Ora
  • Data/Ora corrente
  • Data/Ora di un file
  • Ordinale.

Per ogni tipo, oltre alla selezione o al valore, occorre indicare ulteriori parametri specifici, come formato di data e ora, sequenze, decimali significativi, ecc.

Inoltre è possibile indicare eventuali parametri specifici per la lingua corrente.  Questo parametro gestisce esclusivamente l'italiano e lo spagnolo. Per entrambe le lingue, se questo parametro è impostato con "F", gli ordinali sono riprodotti al femminile, in tutti gli altri casi al maschile. Solo per lo spagnolo, se questo parametro è impostato con "F", il numero 1 è riprodotto al femminile, altrimenti al maschile. Solo per l'italiano, se questo parametro è impostato con "E", l'importo è riprodotto in EURO altrimenti in Lire. 

Motore del Riconoscimento VocaleSelezionare dalla lista il motore di riconoscimento vocale da utilizzare.
Abilita Beep di avviso ad inizio riconoscimentoAbilitato se è stato selezionato un motore integrato. Indica se deve essere emesso un breve segnale acustico prima di ogni fase di riconoscimento vocale.
Termina riconoscimento su ricezione DigitsAbilitato se è stato selezionato un motore SAPI. Indica se la fase di riconoscimento può essere interrotta dalla pressione di un tasto dal parte dell'utente. Se abilitato, i tasti numerici entrano a far parte del codice, mentre * e # concludono l'acquisizione dei caratteri (fine del codice).
Tempo massimo di attesa (secondi)Abilitato se è stato selezionato un motore SAPI. Massimo periodo di silenzio, espresso in secondi, che il riconoscimento attende prima che l'utente cominci a parlare, prima di uscire per fallimento.  Valore predefinito: 20 secondi.
Abilita riconoscimento durante la play (Barge ln)Abilitato se è stato selezionato un motore integrato. Abilita l’interruzione dei messaggi nel momento in cui l’utente pronuncia una frase, un nome o un qualsiasi comando vocale (senza attendere il “beep” di fine messaggio).
Massimo silenzio iniziale (secondi)Abilitato se è stato selezionato un motore integrato. Specificare il periodo massimo di silenzio, in secondi, che il riconoscimento attende, prima che l'utente cominci a parlare, prima di uscire per fallimento.  Valore predefinito: 20 secondi.
Look Ahead TimeAbilitato se è stato selezionato un motore integrato. Indicare il tempo in millisecondi che l'algoritmo di riconoscimento utilizza per verificare il frame audio successivo al fine di migliorare la qualità della codifica. Valore predefinito: 800 millisecondi. Per maggiori informazioni vedere anche Look Ahead Time.
Soglia di affidabilità (0-100)E' un valore tra 1 e 100 che indica il grado di sicurezza con cui un carattere deve essere riconosciuto per poter essere considerato valido. Valori alti indicano maggiore precisione e, quindi, maggior probabilità di nessun riconoscimento. Valore predefinito: 70.
Servizio da attivare a seconda della selezioneUtilizzare i tasti Nuovo, Modifica e Cancella per indicare il servizio da attivare a seconda della scelta fatta dal chiamante.
Parola chiaveParola che l'utente deve pronunciare per attivare l'opzione. Se si indica il carattere "-", il servizio associato è quello di default attivato nel caso che nessuna delle altre condizioni sia soddisfatta al termine delle ripetizioni previste.
Digit associatoEventuale digit che l'utente può digitare per attivare il servizio associato.
Servizio attivatoSolo configurando il Servizio tramite Messenger Configurator. Selezionare dalla lista il servizio da attivare per la particolare sequenza.
Numero massimo di tentativiMassimo numero di tentativi concessi all'utente per effettuare la sua scelta prima di proseguire con il servizio di default.
Messaggio di errore con invito a ripetereMessaggio che, in caso di mancato riconoscimento, invita l'utente a ripetere la sua scelta. Il tasto Assegna Valore consente di salvare il valore indicato in una costante, oppure recuperarlo da una Transfer Property o un Call Data.
Messaggio di errore su raggiungimento limiteMessaggio di errore nel caso che si superi il numero di tentativi concessi senza aver riconosciuto con successo la scelta dell'utente. Il tasto Assegna Valore consente di salvare il valore indicato in una costante, oppure recuperarlo da una Transfer Property o un Call Data.
Abilitazione salvataggio sceltaAbilitare la casella per attivare il salvataggio della scelta dell'utente in una Transfer Property.
Nome Transfer PropertySelezionare dall'elenco il nome della Transfer Property in cui salvare la scelta.
Aggiungere all'attuale valoreSe abilitato, la scelta dell'utente viene accodata, separata da virgola, all'attuale contenuto della Transfer Property. E' possibile quindi usare una Transfer Property per memorizzare tutta la sequenza di scelta dell'utente.
Eventuale separatoreEventuale caratteri di separazione da inserire nella transfer property tra il valore esistente e la parola riconosciuta dal servizio.