Wiki source code of 10 - Riconoscimento vocale
Show last authors
author | version | line-number | content |
---|---|---|---|
1 | (% class="box infomessage" style="width:225px; padding: 5px; font-family:verdana; font-size:12px; color: #04ace3; background-color: #fafbfc;" %) | ||
2 | ((( | ||
3 | [[image:acrobat-logo.png]] [[Scarica la pagina come pdf>>https://wiki.ifmgroup.it/bin/export/ifmhelpplatform/MessengerServiziBase/VoiceRecognition/?format=pdf||rel="noopener noreferrer" target="new"]] | ||
4 | ))) | ||
5 | |||
6 | {{box cssClass="floatinginfobox" width="300px" title="**Sommario**"}} | ||
7 | {{toc start="2" depth="3"/}} | ||
8 | {{/box}} | ||
9 | |||
10 | (% class="box errormessage" %) | ||
11 | ((( | ||
12 | **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 "$$". | ||
13 | ))) | ||
14 | |||
15 | |||
16 | == GetAlfaNumCode (CGetAlfaNumCode) == | ||
17 | |||
18 | 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>>doc:Glossario.WebHome]]. 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>>doc:Glossario.WebHome]]). | ||
19 | |||
20 | |||
21 | **Parametri di Configurazione** | ||
22 | |||
23 | (% border="1" style="border:1px solid #cccccc; margin-bottom:50px" %) | ||
24 | (% style="background-color:#f0f0f0" %)|=(% style="width: 200px;" %)**Parametri**|**Descrizione** | ||
25 | |**Tipo di motore di sintesi vocale**|((( | ||
26 | Selezionare il tipo di motore tra i seguenti: | ||
27 | |||
28 | * SAPI (solo con PhoneSwitch, [[PBXServer>>doc:Glossario.WebHome]], [[DialServer>>doc:Glossario.WebHome]]) | ||
29 | * Integrati (solo per LightHouse) | ||
30 | ))) | ||
31 | |**Directory contenente i file wav/avi**|Indicare 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. | ||
32 | |**Motore**|Selezionare il motore di riconoscimento vocale da utilizzare dal sistema. **Nota**: il suo valore dipende dai motori installati nel sistema. | ||
33 | |**Abilita Beep di avviso ad inizio riconoscimento**|Indicare se deve essere emesso un breve segnale acustico prima di ogni fase di riconoscimento vocale. | ||
34 | |**Termina riconoscimento su ricezione Digit**|Indicare 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). | ||
35 | |**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. | ||
36 | |**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. | ||
37 | |**Soglia di affidabilità | ||
38 | (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. | ||
39 | |**Numero massimo tentativi**|Numero massimo di tentativi in caso di codice non valido (nessuna digitazione). | ||
40 | |**Lunghezza massima dei codici**|Numero 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. | ||
41 | |**File Grammatica da utilizzare**|Nome del file contenente la [[grammatica>>||anchor="HGrammatica"]] 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. | ||
42 | |**Nome Transfer Property**|Selezionare la [[Transfer Property>>doc:ifmhelpplatform.MessengerConfigurator.TransferProperty.WebHome]] in cui viene salvato il codice acquisito. | ||
43 | |**Servizio successivo se riconoscimento valido**|//Solamente configurando il Servizio tramite Messenger Configurator//. Selezionare dall'elenco il servizio da attivare nel caso di codice riconosciuto e confermato dall'utente. | ||
44 | |**Servizio successivo per mancato riconoscimento**|//Solamente configurando il Servizio tramite Messenger Configurator//. Selezionare dall'elenco il servizio da attivare nel caso di codice NON riconosciuto o NON confermato dall'utente. | ||
45 | |||
46 | **Messaggi Disponibili** | ||
47 | |||
48 | (% border="1" style="border:1px solid #cccccc; margin-bottom:50px" %) | ||
49 | (% style="background-color:#f0f0f0" %)|=(% style="width: 200px;" %)**Nome File**|**Messaggio** | ||
50 | |**IntroMessage.wav**|Messaggio di accoglienza con istruzioni per l'inserimento del proprio codice. | ||
51 | |**CharNotRecognized.wav**|Comunica che il riconoscimento del carattere corrente non è andato a buon fine. | ||
52 | |**RecognizedCodeIs.wav**|Messaggio del tipo: //"Il codice riconosciuto è...".// | ||
53 | |**confirm.wav**|Messaggio del tipo: //"Premere 1 per confermare, 0 per riprovare..."//. | ||
54 | |**RepeatCode.wav**|Invita l'utente a riprovare il riconoscimento del codice dall'inizio. | ||
55 | | | | ||
56 | |||
57 | ==== Grammatica ==== | ||
58 | |||
59 | 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: | ||
60 | |||
61 | * La sezione (% style="font-family:Courier New,Courier,monospace" %)[Grammar] (%%)contiene i parametri generali della grammatica, attualmente il solo nome. | ||
62 | * La sezione (% style="font-family:Courier New,Courier,monospace" %)[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. | ||
63 | * La sezione (% style="font-family:Courier New,Courier,monospace" %)[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. | ||
64 | * La sezione (% style="font-family:Courier New,Courier,monospace" %)[ConfirmOptions](%%) contiene le opzioni ammesse per la conferma del codice riconosciuto dal sistema; | ||
65 | ** la chiave "Confirm" indica la parola che deve essere pronunciata dal cliente per confermare il codice riconosciuto | ||
66 | ** la chiave "Cancel" indica la parola per annullare il riconoscimento e introdurre il codice dall'inizio. | ||
67 | |||
68 | **Esempio File Grammatica** | ||
69 | |||
70 | (% style="background-color:#cccccc; width:600px" %) | ||
71 | |((( | ||
72 | (% class="small" style="font-family:Courier New,Courier,monospace" %)[Grammar](%%) | ||
73 | (% class="small" style="font-family:Courier New,Courier,monospace" %)Type=AlfaCode(%%) | ||
74 | (% class="small" style="font-family:Courier New,Courier,monospace" %)[List](%%) | ||
75 | (% class="small" style="font-family:Courier New,Courier,monospace" %)0=0(%%) | ||
76 | (% class="small" style="font-family:Courier New,Courier,monospace" %)1=1(%%) | ||
77 | (% class="small" style="font-family:Courier New,Courier,monospace" %)2=2(%%) | ||
78 | (% class="small" style="font-family:Courier New,Courier,monospace" %)3=3(%%) | ||
79 | (% class="small" style="font-family:Courier New,Courier,monospace" %)4=4(%%) | ||
80 | (% class="small" style="font-family:Courier New,Courier,monospace" %)5=5(%%) | ||
81 | (% class="small" style="font-family:Courier New,Courier,monospace" %)6=6(%%) | ||
82 | (% class="small" style="font-family:Courier New,Courier,monospace" %)7=7(%%) | ||
83 | (% class="small" style="font-family:Courier New,Courier,monospace" %)8=8(%%) | ||
84 | (% class="small" style="font-family:Courier New,Courier,monospace" %)9=9(%%) | ||
85 | (% class="small" style="font-family:Courier New,Courier,monospace" %)uno=1(%%) | ||
86 | (% class="small" style="font-family:Courier New,Courier,monospace" %)due=2(%%) | ||
87 | (% class="small" style="font-family:Courier New,Courier,monospace" %)tre=3(%%) | ||
88 | (% class="small" style="font-family:Courier New,Courier,monospace" %)quattro=4(%%) | ||
89 | (% class="small" style="font-family:Courier New,Courier,monospace" %)cinque=5(%%) | ||
90 | (% class="small" style="font-family:Courier New,Courier,monospace" %)sei=6(%%) | ||
91 | (% class="small" style="font-family:Courier New,Courier,monospace" %)sette=7(%%) | ||
92 | (% class="small" style="font-family:Courier New,Courier,monospace" %)otto=8(%%) | ||
93 | (% class="small" style="font-family:Courier New,Courier,monospace" %)nove=9(%%) | ||
94 | (% class="small" style="font-family:Courier New,Courier,monospace" %)zero=0(%%) | ||
95 | (% class="small" style="font-family:Courier New,Courier,monospace" %)a=A(%%) | ||
96 | (% class="small" style="font-family:Courier New,Courier,monospace" %)bi=B(%%) | ||
97 | (% class="small" style="font-family:Courier New,Courier,monospace" %)ci=C(%%) | ||
98 | (% class="small" style="font-family:Courier New,Courier,monospace" %)di=D(%%) | ||
99 | (% class="small" style="font-family:Courier New,Courier,monospace" %)e=E(%%) | ||
100 | (% class="small" style="font-family:Courier New,Courier,monospace" %)effe=F(%%) | ||
101 | (% class="small" style="font-family:Courier New,Courier,monospace" %)gi=G(%%) | ||
102 | (% class="small" style="font-family:Courier New,Courier,monospace" %)acca=H(%%) | ||
103 | (% class="small" style="font-family:Courier New,Courier,monospace" %)i=I(%%) | ||
104 | (% class="small" style="font-family:Courier New,Courier,monospace" %)elle=L(%%) | ||
105 | (% class="small" style="font-family:Courier New,Courier,monospace" %)emme=M(%%) | ||
106 | (% class="small" style="font-family:Courier New,Courier,monospace" %)enne=N(%%) | ||
107 | (% class="small" style="font-family:Courier New,Courier,monospace" %)o=O(%%) | ||
108 | (% class="small" style="font-family:Courier New,Courier,monospace" %)pi=P(%%) | ||
109 | (% class="small" style="font-family:Courier New,Courier,monospace" %)qu=Q(%%) | ||
110 | (% class="small" style="font-family:Courier New,Courier,monospace" %)erre=R(%%) | ||
111 | (% class="small" style="font-family:Courier New,Courier,monospace" %)esse=S(%%) | ||
112 | (% class="small" style="font-family:Courier New,Courier,monospace" %)ti=T(%%) | ||
113 | (% class="small" style="font-family:Courier New,Courier,monospace" %)u=U(%%) | ||
114 | (% class="small" style="font-family:Courier New,Courier,monospace" %)vu=V(%%) | ||
115 | (% class="small" style="font-family:Courier New,Courier,monospace" %)zeta=Z(%%) | ||
116 | (% class="small" style="font-family:Courier New,Courier,monospace" %)x=X(%%) | ||
117 | (% class="small" style="font-family:Courier New,Courier,monospace" %)y=Y(%%) | ||
118 | (% class="small" style="font-family:Courier New,Courier,monospace" %)k=K(%%) | ||
119 | (% class="small" style="font-family:Courier New,Courier,monospace" %)j=J(%%) | ||
120 | (% class="small" style="font-family:Courier New,Courier,monospace" %)w=W(%%) | ||
121 | (% class="small" style="font-family:Courier New,Courier,monospace" %)ics=X(%%) | ||
122 | (% class="small" style="font-family:Courier New,Courier,monospace" %)ipsilon=Y(%%) | ||
123 | (% class="small" style="font-family:Courier New,Courier,monospace" %)cappa=K(%%) | ||
124 | (% class="small" style="font-family:Courier New,Courier,monospace" %)vudoppia=W(%%) | ||
125 | (% class="small" style="font-family:Courier New,Courier,monospace" %)doppiavu=W(%%) | ||
126 | (% class="small" style="font-family:Courier New,Courier,monospace" %)gei=J(%%) | ||
127 | (% class="small" style="font-family:Courier New,Courier,monospace" %)ilunga=J(%%) | ||
128 | (% class="small" style="font-family:Courier New,Courier,monospace" %)igreca=Y(%%) | ||
129 | (% class="small" style="font-family:Courier New,Courier,monospace" %)Ancona=A(%%) | ||
130 | (% class="small" style="font-family:Courier New,Courier,monospace" %)Bologna=B(%%) | ||
131 | (% class="small" style="font-family:Courier New,Courier,monospace" %)Catania=C(%%) | ||
132 | (% class="small" style="font-family:Courier New,Courier,monospace" %)Domodossola=D(%%) | ||
133 | (% class="small" style="font-family:Courier New,Courier,monospace" %)Empoli=E(%%) | ||
134 | (% class="small" style="font-family:Courier New,Courier,monospace" %)Firenze=F(%%) | ||
135 | (% class="small" style="font-family:Courier New,Courier,monospace" %)Genova=G(%%) | ||
136 | (% class="small" style="font-family:Courier New,Courier,monospace" %)Hotel=H(%%) | ||
137 | (% class="small" style="font-family:Courier New,Courier,monospace" %)Imperia=I(%%) | ||
138 | (% class="small" style="font-family:Courier New,Courier,monospace" %)Livorno=L(%%) | ||
139 | (% class="small" style="font-family:Courier New,Courier,monospace" %)Milano=M(%%) | ||
140 | (% class="small" style="font-family:Courier New,Courier,monospace" %)Napoli=N(%%) | ||
141 | (% class="small" style="font-family:Courier New,Courier,monospace" %)Otranto=O(%%) | ||
142 | (% class="small" style="font-family:Courier New,Courier,monospace" %)Palermo=P(%%) | ||
143 | (% class="small" style="font-family:Courier New,Courier,monospace" %)Quadro=Q(%%) | ||
144 | (% class="small" style="font-family:Courier New,Courier,monospace" %)Roma=R(%%) | ||
145 | (% class="small" style="font-family:Courier New,Courier,monospace" %)Savona=S(%%) | ||
146 | (% class="small" style="font-family:Courier New,Courier,monospace" %)Torino=T(%%) | ||
147 | (% class="small" style="font-family:Courier New,Courier,monospace" %)Urbino=U(%%) | ||
148 | (% class="small" style="font-family:Courier New,Courier,monospace" %)Verona=V(%%) | ||
149 | (% class="small" style="font-family:Courier New,Courier,monospace" %)Zagabria=Z(%%) | ||
150 | (% class="small" style="font-family:Courier New,Courier,monospace" %)[Stop](%%) | ||
151 | (% class="small" style="font-family:Courier New,Courier,monospace" %)stop(%%) | ||
152 | (% class="small" style="font-family:Courier New,Courier,monospace" %)end(%%) | ||
153 | (% class="small" style="font-family:Courier New,Courier,monospace" %)[ConfirmOptions](%%) | ||
154 | (% class="small" style="font-family:Courier New,Courier,monospace" %)Confirm=corretto(%%) | ||
155 | (% class="small" style="font-family:Courier New,Courier,monospace" %)Cancel=annulla | ||
156 | ))) | ||
157 | |||
158 | == SpeechToText (CSpeechToText) == | ||
159 | |||
160 | 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: | ||
161 | |||
162 | * Utilizzare TTS o WAV per i messaggi (sia per quelli di invito a pronunciare la propria scelta sia per quello di mancato riconoscimento). | ||
163 | * Abilitare la funzionalità di //bargeIn//, cioè far partire il riconoscimento durante il play del messaggio (indipendentemente se si usa TTS o WAV). | ||
164 | * 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.// | ||
165 | * 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. | ||
166 | * 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|…..”//. | ||
167 | * In caso di errore di riconoscimento il blocchetto salva in una Transfer Property (//~_~_RecognizeErrorCode~_~_//) il codice di errore ritornato dall’engine. | ||
168 | * 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. | ||
169 | * È stata aggiunta la scheda //Parametri aggiuntivi// per permettere la definizione dei parametri addizionali relativi al passaggio delle API Google dalla versione 1 alla 2. | ||
170 | |||
171 | |||
172 | (% class="box errormessage" %) | ||
173 | ((( | ||
174 | **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. | ||
175 | ))) | ||
176 | |||
177 | |||
178 | === **Parametri di Configurazione** === | ||
179 | |||
180 | ==== **Proprietà** ==== | ||
181 | |||
182 | 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//: | ||
183 | |||
184 | //Scheda Generale// | ||
185 | |||
186 | [[image:STT_skGenerale.jpg||style="-moz-box-shadow:5px 5px 10px 0px rgba(204,204,204,0.8); -webkit-box-shadow:5px 5px 10px 0px rgba(204,204,204,0.8); box-shadow:5px 5px 10px 0px rgba(204,204,204,0.8); margin:20px 20px" width="400"]] | ||
187 | |||
188 | 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. | ||
189 | |||
190 | L'elenco dei campi visualizzati è il seguente: | ||
191 | |||
192 | (% border="1" style="border:1px solid #cccccc; margin-bottom:50px" %) | ||
193 | (% style="background-color:#f0f0f0" %)|(% style="width:200px" %)**Parametri**|**Descrizione** | ||
194 | |**Utilizzare TTS invece che messaggi WAV**|Selezionare 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. | ||
195 | |**Numero massimo di tentativi**|Indicare il numero di tentativi consentiti al chiamante, se la fase di riconoscimento non avesse successo. Valore predefinito: 2. | ||
196 | |||
197 | //Scheda Messaggi per TTS// | ||
198 | |||
199 | [[image:STT_skMessaggiTTS.jpg||style="-moz-box-shadow:5px 5px 10px 0px rgba(204,204,204,0.8); -webkit-box-shadow:5px 5px 10px 0px rgba(204,204,204,0.8); box-shadow:5px 5px 10px 0px rgba(204,204,204,0.8); margin:20px 20px" width="400"]] | ||
200 | |||
201 | |||
202 | L'elenco dei campi visualizzati è il seguente: | ||
203 | |||
204 | (% border="1" style="border:1px solid #cccccc; margin-bottom:50px" %) | ||
205 | (% style="background-color:#f0f0f0" %)|(% style="width:200px" %)**Parametri**|**Descrizione** | ||
206 | |**Testo messaggio iniziale**|Indicare nel campo il testo del messaggio introduttivo. | ||
207 | |**Testo messaggio di errore**|Indicare il messaggio da riprodurre in caso di mancato riconoscimento. | ||
208 | |||
209 | //Scheda Messaggi per WAV// | ||
210 | |||
211 | [[image:STT_skMessaggiWav.jpg||style="-moz-box-shadow:5px 5px 10px 0px rgba(204,204,204,0.8); -webkit-box-shadow:5px 5px 10px 0px rgba(204,204,204,0.8); box-shadow:5px 5px 10px 0px rgba(204,204,204,0.8); margin:20px 20px" width="400"]] | ||
212 | |||
213 | 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: | ||
214 | |||
215 | * File | ||
216 | * Numero | ||
217 | * Importo | ||
218 | * Sequenza di caratteri | ||
219 | * Lista formattata | ||
220 | * Data/Ora | ||
221 | * Data/Ora attuale | ||
222 | * Data/Ora del file | ||
223 | * Ordinale | ||
224 | \\ | ||
225 | |||
226 | //Scheda Motore TTS// | ||
227 | |||
228 | [[image:STT_skMotoreTTS.jpg||style="-moz-box-shadow:5px 5px 10px 0px rgba(204,204,204,0.8); -webkit-box-shadow:5px 5px 10px 0px rgba(204,204,204,0.8); box-shadow:5px 5px 10px 0px rgba(204,204,204,0.8); margin:20px 20px" width="400"]] | ||
229 | |||
230 | Impostare il campo seguente: | ||
231 | |||
232 | (% border="1" style="border:1px solid #cccccc; margin-bottom:50px" %) | ||
233 | (% style="background-color:#f0f0f0" %)|(% style="width:200px" %)**Parametro**|**Descrizione** | ||
234 | |**Engine Name**|Selezionare il motore di sintesi da utilizzare. L'elenco dei motori disponibili corrisponde a quelli definiti nel server TTSASR. | ||
235 | |||
236 | //Scheda Motore STT// | ||
237 | |||
238 | [[image:STT_skMotoreSTT.jpg||style="-moz-box-shadow:5px 5px 10px 0px rgba(204,204,204,0.8); -webkit-box-shadow:5px 5px 10px 0px rgba(204,204,204,0.8); box-shadow:5px 5px 10px 0px rgba(204,204,204,0.8); margin:20px 20px" width="400"]] | ||
239 | |||
240 | Impostare i campi seguenti: | ||
241 | |||
242 | (% border="1" style="border:1px solid #cccccc; margin-bottom:50px" %) | ||
243 | (% style="background-color:#f0f0f0" %)|(% style="width:200px" %)**Parametro**|**Descrizione** | ||
244 | |**Motore di riconoscimento vocale da utilizzare**|Selezionare il motore di riconoscimento da utilizzare. Al momento l’unico motore disponibile e configurabile è //Google Speech API//. | ||
245 | |**Codice Lingua**|Indicare il codice della lingua, in formato [[BCP-47>>https://it.wikipedia.org/wiki/Codice_di_lingua_IETF||rel="noopener noreferrer" target="_blank"]], da utilizzare per il riconoscimento. Valore predefinito: //it-IT//. | ||
246 | |**Termina riconoscimento su ricezione digit dopo**|Selezionare 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. | ||
247 | |**Abilita beep di avviso ad inizio riconoscimento**|Selezionare per abilitare il suono di avviso nel momento di inizo del riconoscimento. | ||
248 | |**Abilita riconoscimento durante la play (BargeIn)**|Selezionare se si vuole far partire il riconoscimento dell'audio già durante la riproduzione. | ||
249 | |**Restituisce l'accuratezza del riconoscimento**|Selezionare se si vuole restituire al Messenger iI punteggio di confidenza del riconoscimento per confrontare l'accuratezza relativa di più alternative. | ||
250 | |**Abilita riconoscimento espressione singola**|Selezionare si si vuole migliorare la modalità di riconoscimento di singoli comandi o parole, oppure di frasi brevi e concise, ad esempio //sì// o //no//. | ||
251 | |**Tempo massimo di attesa**|((( | ||
252 | Indicare il tempo massimo, espresso in secondi, consentito al chiamante per effettuare la sua scelta vocale. Valore predefinito: 30 secondi. | ||
253 | |||
254 | **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. | ||
255 | ))) | ||
256 | |**Soglia di affidabilità**|Indicare il livello di affidabilità, tra 0 e 100, da raggiungere per considerare il riconoscimento valido. Valore predefinito: 70. | ||
257 | |**Suggerimenti**|Da 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~|//. | ||
258 | |**Valore Parametri**|Opzionale. È 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//. | ||
259 | |||
260 | //Scheda Parametri aggiuntivi// | ||
261 | |||
262 | In questa scheda è possibile indicare alcuni parametri aggiuntivi relativi all'aggiornamento di versione delle API Google di riconoscimento vocale (da V1 a V2). | ||
263 | |||
264 | [[image:STT_skParAgg.jpg||style="-moz-box-shadow:5px 5px 10px 0px rgba(204,204,204,0.8); -webkit-box-shadow:5px 5px 10px 0px rgba(204,204,204,0.8); box-shadow:5px 5px 10px 0px rgba(204,204,204,0.8); margin:20px 20px" width="400"]] | ||
265 | |||
266 | I parametri aggiuntivi predefiniti sono i seguenti: | ||
267 | |||
268 | (% border="1" style="border:1px solid #cccccc; margin-bottom:50px" %) | ||
269 | (% style="background-color:#f0f0f0" %)|(% style="width:200px" %)**Parametro**|**Descrizione** | ||
270 | |**Model**|Indicare il modello di apprendimento automatico interessato. Il modello consigliato è //telephony// (modello più accurato per trascrivere l'audio telefonico). | ||
271 | |**SpeechEndTimeout**|Indicare 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. | ||
272 | |**SpeechStartTimeout**|Indicare 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. | ||
273 | |**StopAsFirstIsFinal**|Indicare 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. | ||
274 | |**EnableAutomaticPunctuation**|Se 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. | ||
275 | |**ProfanityFilter**|Se 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. | ||
276 | |||
277 | ==== ==== | ||
278 | |||
279 | //Scheda Salvataggio scelta// | ||
280 | |||
281 | [[image:WAV_skSalva.png||style="-moz-box-shadow:5px 5px 10px 0px rgba(204,204,204,0.8); -webkit-box-shadow:5px 5px 10px 0px rgba(204,204,204,0.8); box-shadow:5px 5px 10px 0px rgba(204,204,204,0.8); margin:20px 20px" width="400"]] | ||
282 | |||
283 | Impostare i campi seguenti: | ||
284 | |||
285 | (% border="1" style="border:1px solid #cccccc; margin-bottom:50px" %) | ||
286 | (% style="background-color:#f0f0f0" %)|(% style="width:200px" %)**Parametro**|**Descrizione** | ||
287 | |//Salva frase riconosciuta in//| | ||
288 | |(% style="text-align:right" %)**Nome Transfer Property**|Selezionare dall'elenco la //transfer property// in cui salvare il testo convertito (in caso di riconoscimento con successo) o il digit premuto. | ||
289 | |(% style="text-align:right" %)**CallData**|Indicare il //CallData// in cui salvare il testo convertito (in caso di riconoscimento con successo) o il digit premuto. | ||
290 | |//Salva confidence in//| | ||
291 | |**Nome Transfer Property**|Selezionare dall'elenco la //transfer property// in cui salvare il valore del livello di accuratezza (confidence). | ||
292 | |(% style="text-align:right" %)**CallData**|Indicare il //CallData// in cui salvare il valore del livello di accuratezza (confidence). | ||
293 | |||
294 | ==== Port di Uscita ==== | ||
295 | |||
296 | [[image:output_port.jpg||style="margin-bottom:20px; margin-top:20px"]] | ||
297 | |||
298 | Le funzionalità dei //Port di Uscita// del blocchetto sono le seguenti : | ||
299 | |||
300 | (% border="1" style="border:1px solid #cccccc; margin-bottom:50px" %) | ||
301 | (% style="background-color:#f0f0f0" %)|(% style="width:200px" %)**Parametro**|**Descrizione** | ||
302 | |**Failure**|Indicare il servizio successivo da attivare nel caso in cui il motore non riconosca l'audio e non sia premuto dal chiamante alcun digit. | ||
303 | |**Digit Detected**|Indicare il servizio successivo da attivare nel caso in cui il riconoscimento sia interrotto dalla pressione di un digit. | ||
304 | |**Success**|Indicare il servizio successivo da attivare nel caso il riconoscimento abbia successo. | ||
305 | |||
306 | === **Transfer Property** === | ||
307 | |||
308 | 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: | ||
309 | |||
310 | (% border="1" style="border:1px solid #cccccc; margin-bottom:50px" %) | ||
311 | (% style="background-color:#f0f0f0" %)|(% style="width:200px" %)**Parametro**|**Descrizione** | ||
312 | |**~_~_RecognizeResult~_~_**|Contiene l’esito della richiesta di riconoscimento. | ||
313 | |**_ASR_Source**|((( | ||
314 | Contiene la sorgente dell’informazione contenuta nella Transfer Property e nel CallData definiti in configurazione. I valori possibili sono: | ||
315 | |||
316 | * **“”** (stringa vuota): nel caso in cui non sia riconosciuto l'audio e non sia rilevato alcun digit. | ||
317 | * **“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. | ||
318 | * **“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. | ||
319 | ))) | ||
320 | |||
321 | == VoiceMenu (CVoiceMenu) == | ||
322 | |||
323 | 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. | ||
324 | |||
325 | 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>>doc:Glossario.WebHome]]). | ||
326 | |||
327 | |||
328 | **Parametri di Configurazione** | ||
329 | |||
330 | |=(% style="width: 200px;" %)**Parametri**|**Descrizione** | ||
331 | |**Tipo di motore di sintesi vocale**|((( | ||
332 | Selezionare il tipo di motore tra i seguenti: | ||
333 | |||
334 | * //SAPI (solo con PhoneSwitch, [[PBXServer>>doc:Glossario.WebHome]], [[DialServer>>doc:Glossario.WebHome]])// | ||
335 | * //Integrati (solo per LightHouse)// | ||
336 | ))) | ||
337 | |**Usa un dizionario interno al motore**|Se è stato selezionato un motore di sintesi integrato, è possibile abilitare l'uso di un dizionario interno, specificandone il folder e il nome. | ||
338 | |**Lista dei messaggi**|((( | ||
339 | 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: | ||
340 | |||
341 | * File WAV/AVI | ||
342 | * Numero | ||
343 | * Importo | ||
344 | * Sequenza di caratteri | ||
345 | * Lista formattata | ||
346 | * Data/Ora | ||
347 | * Data/Ora corrente | ||
348 | * Data/Ora di un file | ||
349 | * Ordinale. | ||
350 | |||
351 | Per ogni tipo, oltre alla selezione o al valore, occorre indicare ulteriori parametri specifici, come formato di data e ora, sequenze, decimali significativi, ecc. | ||
352 | |||
353 | 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. | ||
354 | ))) | ||
355 | |**Motore del Riconoscimento Vocale**|Selezionare dalla lista il motore di riconoscimento vocale da utilizzare. | ||
356 | |**Abilita Beep di avviso ad inizio riconoscimento**|Abilitato se è stato selezionato un motore integrato. Indica se deve essere emesso un breve segnale acustico prima di ogni fase di riconoscimento vocale. | ||
357 | |**Termina riconoscimento su ricezione Digits**|Abilitato 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). | ||
358 | |**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. | ||
359 | |**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). | ||
360 | |**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. | ||
361 | |**Look Ahead Time**|Abilitato 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>>doc:Glossario.WebHome||anchor="HLookAheadTime" target="_blank"]]. | ||
362 | |**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. | ||
363 | |**Servizio da attivare a seconda della selezione**|Utilizzare i tasti //Nuovo//, //Modifica// e //Cancella// per indicare il servizio da attivare a seconda della scelta fatta dal chiamante. | ||
364 | |**Parola chiave**|Parola 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. | ||
365 | |**Digit associato**|Eventuale digit che l'utente può digitare per attivare il servizio associato. | ||
366 | |**Servizio attivato**|//Solo configurando il Servizio tramite Messenger Configurator//. Selezionare dalla lista il servizio da attivare per la particolare sequenza. | ||
367 | |**Numero massimo di tentativi**|Massimo numero di tentativi concessi all'utente per effettuare la sua scelta prima di proseguire con il servizio di default. | ||
368 | |**Messaggio di errore con invito a ripetere**|Messaggio 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. | ||
369 | |**Messaggio di errore su raggiungimento limite**|Messaggio 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. | ||
370 | |**Abilitazione salvataggio scelta**|Abilitare la casella per attivare il salvataggio della scelta dell'utente in una [[Transfer Property>>doc:ifmhelpplatform.MessengerConfigurator.TransferProperty.WebHome]]. | ||
371 | |**Nome Transfer Property**|Selezionare dall'elenco il nome della Transfer Property in cui salvare la scelta. | ||
372 | |**Aggiungere all'attuale valore**|Se 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. | ||
373 | |**Eventuale separatore**|Eventuale caratteri di separazione da inserire nella transfer property tra il valore esistente e la parola riconosciuta dal servizio. | ||
374 | | | |