Esercitazione: Abilitare le funzionalità vocali per il bot
È possibile usare Il riconoscimento vocale di Azure per intelligenza artificiale per abilitare un chatbot.
In questa esercitazione si usa Microsoft Bot Framework per creare un bot che risponde a ciò che l'utente dice. Si distribuisce il bot in Azure e lo si registrerà con il canale Direct Line Speech di Bot Framework. Si configura quindi un'app client di esempio per Windows che consente di parlare al bot e ascoltarlo mentre risponde.
Per completare l'esercitazione, non è necessaria una profonda esperienza o familiarità con Azure, i bot di Bot Framework o Direct Line Speech.
Il chatbot abilitato per le funzionalità vocali creato in questa esercitazione segue questi passaggi:
- L'applicazione client di esempio è configurata per connettersi al canale Direct Line Speech e all'echo bot.
- Quando l'utente preme un pulsante, viene trasmesso l'audio vocale dal microfono. In alternativa, l'audio viene registrato continuamente quando viene usata una parola chiave personalizzata.
- Se viene usata una parola chiave personalizzata, il rilevamento delle parole chiave avviene nel dispositivo locale, limitando così i flussi audio nel cloud.
- L'applicazione client di esempio usa Speech SDK per connettersi al canale Direct Line Speech e trasmettere audio.
- Facoltativamente, la verifica della parola chiave con una maggiore accuratezza viene eseguita nel servizio.
- L'audio viene passato al servizio di riconoscimento vocale e trascritto in testo.
- Il testo riconosciuto viene passato all'echo bot come attività di Bot Framework.
- Il testo della risposta viene trasformato in audio dal servizio di sintesi vocale e trasmesso nuovamente all'applicazione client per la riproduzione.
Nota
I passaggi di questa esercitazione non richiedono un servizio a pagamento. I nuovi utenti di Azure possono usare i crediti della sottoscrizione di valutazione gratuita di Azure e il livello gratuito del servizio Voce per completare l'esercitazione.
Contenuto dell'esercitazione:
- Creare nuove risorse di Azure.
- Compilare, testare e distribuire l'echo bot di esempio nel servizio app di Azure.
- Registrare il bot con un canale Direct Line Speech.
- Compilare ed eseguire il client Assistente vocale Windows per interagire con l'echo bot.
- Aggiungere l'attivazione tramite una parola chiave personalizzata.
- Apprendere come modificare la lingua per il riconoscimento e la pronuncia del parlato.
Prerequisiti
Per completare l'esercitazione è necessario quanto segue:
- Un PC Windows 10 con microfono e altoparlanti funzionanti (o cuffie).
- Visual Studio 2017 o versione successiva con il carico di lavoro Sviluppo ASP.NET e Web installato.
- .NET Framework Runtime 4.6.1 o versione successiva.
- Un account Azure. Iscrizione gratuita.
- Un account GitHub.
- Git per Windows.
Creare un gruppo di risorse
L'app client che viene creata in questa esercitazione usa alcuni servizi di Azure. Per ridurre il tempo di round trip per le risposte del bot, assicurarsi che questi servizi si trovino nella stessa area di Azure.
Questa sezione descrive la creazione di un gruppo di risorse nell'area Stati Uniti occidentali. Il gruppo di risorse viene usato quando si creano singole risorse per Bot Framework, il canale Direct Line Speech e il servizio Voce.
- Passare alla pagina del portale di Azure per la creazione di un gruppo di risorse.
- Specificare le informazioni seguenti:
- Impostare Sottoscrizione su Versione di valutazione gratuita. È anche possibile usare una sottoscrizione esistente.
- Immettere un nome per Gruppo di risorse. In questo caso si userà SpeechEchoBotTutorial-ResourceGroup.
- Dal menu a discesa Area selezionare Stati Uniti occidentali.
- Seleziona Rivedi e crea. Verrà visualizzato un banner che indica Convalida superata.
- Seleziona Crea. La creazione di un gruppo di risorse può richiedere alcuni minuti.
- Come per le risorse create più avanti in questa esercitazione, è consigliabile aggiungere il gruppo di risorse al dashboard per semplificare l'accesso. Per aggiungere il gruppo di risorse, selezionare l'icona a forma di puntina accanto al nome.
Scegliere un'area di Azure
Assicurarsi di usare un'area di Azure supportata. Il canale Direct Line Speech usa il servizio di sintesi vocale che dispone di voci neurali e standard. Le voci neurali vengono usate in queste aree di Azure, mentre le voci standard (che in futuro verranno ritirate) vengono usate in queste aree di Azure.
Per altre informazioni sulle aree, vedere Residenza dei dati in Azure.
Creare le risorse
Dopo aver creato un gruppo di risorse in un'area supportata, il passaggio successivo consiste nel creare le singole risorse per ogni servizio che verrà usato in questa esercitazione.
Creare una risorsa servizio Voce
- Passare alla pagina del portale di Azure per la creazione di una risorsa del servizio Voce.
- Specificare le informazioni seguenti:
- Per Nome immettere SpeechEchoBotTutorial-Speech come nome della risorsa.
- Per Sottoscrizione assicurarsi di selezionare Versione di valutazione gratuita.
- Per Posizione selezionare Stati Uniti occidentali.
- Per Piano tariffario selezionare F0. Si tratta del livello gratuito.
- Per Gruppo di risorse selezionare SpeechEchoBotTutorial-ResourceGroup.
- Dopo aver immesso tutte le informazioni necessarie, selezionare Crea. La creazione della risorsa può richiedere alcuni minuti.
- Più avanti in questa esercitazione saranno necessarie le chiavi della sottoscrizione per questo servizio. È possibile accedere a queste chiavi in qualsiasi momento dall'area Panoramica della risorsa (in Gestisci chiavi) o dall'area Chiavi.
A questo punto, controllare che il gruppo di risorse (SpeechEchoBotTutorial-ResourceGroup) abbia una risorsa del servizio Voce:
Nome | Type | Ufficio |
---|---|---|
SpeechEchoBotTutorial-Speech | Voce | Stati Uniti occidentali |
Creare un piano di servizio app di Azure
Un piano di servizio app definisce un set di risorse di calcolo per l'esecuzione di un'app Web.
- Passare alla pagina del portale di Azure per la creazione di un piano di servizio app di Azure.
- Specificare le informazioni seguenti:
- Impostare Sottoscrizione su Versione di valutazione gratuita. È anche possibile usare una sottoscrizione esistente.
- Per Gruppo di risorse selezionare SpeechEchoBotTutorial-ResourceGroup.
- Per Nome immettere SpeechEchoBotTutorial-AppServicePlan come nome del piano.
- Per Sistema operativo selezionare Windows.
- Per Area selezionare Stati Uniti occidentali.
- Per Piano tariffario assicurarsi che sia selezionato S1 Standard. Dovrebbe essere il valore predefinito. In caso contrario, impostare Sistema operativo su Windows.
- Seleziona Rivedi e crea. Verrà visualizzato un banner che indica Convalida superata.
- Seleziona Crea. La creazione della risorsa può richiedere alcuni minuti.
A questo punto, controllare che il gruppo di risorse (SpeechEchoBotTutorial-ResourceGroup) abbia due risorse:
Nome | Type | Ufficio |
---|---|---|
SpeechEchoBotTutorial-AppServicePlan | Piano di servizio app | Stati Uniti occidentali |
SpeechEchoBotTutorial-Speech | Servizi di Azure AI | Stati Uniti occidentali |
Creare un echo bot
Dopo aver creato le risorse, iniziare con l'echo bot di esempio, che restituisce come risposta il testo immesso. Il codice di esempio è già configurato per funzionare con il canale Direct Line Speech, che viene connesso dopo aver distribuito il bot in Azure.
Nota
Le istruzioni seguenti, insieme ad altre informazioni sull'echo bot, sono disponibili nel file README dell'esempio in GitHub.
Eseguire il bot di esempio nel computer
Clonare il repository di esempi:
git clone https://github.com/Microsoft/botbuilder-samples.git
Aprire Visual Studio.
Sulla barra degli strumenti selezionare File>Apri>Progetto/Soluzione. Aprire quindi la soluzione del progetto:
samples\csharp_dotnetcore\02.echo-bot\EchoBot.sln
Dopo aver caricato il progetto, premere F5 per compilarlo ed eseguirlo.
Nel browser che si apre viene visualizzata una schermata simile alla seguente:
Testare il bot di esempio con Bot Framework Emulator
Bot Framework Emulator è un'app desktop che consente agli sviluppatori di bot di testare i bot ed eseguirne il debug in locale (o da remoto attraverso un tunnel). L'emulatore accetta testo digitato (non voce) come input. Il bot risponde anche con testo.
Seguire questa procedura per usare Bot Framework Emulator per testare l'echo bot in esecuzione in locale, con input di testo e output di testo. Dopo aver distribuito il bot in Azure, verrà testato con l'input vocale e l'output vocale.
Installare Bot Framework Emulator versione 4.3.0 o successiva.
Aprire Bot Framework Emulator e quindi selezionare File>Open Bot.
Immettere l'URL per il bot. Ad esempio:
http://localhost:3978/api/messages
Selezionare Connetti.
Il bot deve salutare l'utente con un messaggio "Hello and welcome!". Digitare qualsiasi messaggio e verificare di ricevere una risposta dal bot.
Ecco come può apparire uno scambio di comunicazioni con un echo bot:
Distribuire il bot nel servizio app di Azure
Il passaggio successivo consiste nel distribuire l'echo bot in Azure. Ci sono alcuni modi per distribuire un bot, tra cui l'interfaccia della riga di comando di Azure e i modelli di distribuzione. Questa esercitazione è incentrata sulla pubblicazione direttamente da Visual Studio.
Nota
Se il comando Pubblica non viene visualizzato quando si esegue la procedura seguente, usare il programma di installazione di Visual Studio per aggiungere il carico di lavoro Sviluppo ASP.NET e Web.
Da Visual Studio aprire l'echo bot configurato per l'uso con il canale Direct Line Speech:
samples\csharp_dotnetcore\02.echo-bot\EchoBot.sln
In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto EchoBot e scegliere Pubblica.
Nella finestra Pubblica visualizzata:
- Selezionare Azure>Avanti.
- Selezionare Servizio app di Azure (Windows)>Avanti.
- Selezionare Crea un nuovo servizio app di Azure tramite il segno più verde.
Quando viene visualizzata la finestra Servizio app (Windows):
Selezionare Aggiungi un account e accedere con le credenziali dell'account di Azure. Se è già stato effettuato l'accesso, selezionare l'account nell'elenco a discesa.
Per Nome immettere un nome univoco globale per il bot. Questo nome viene usato per creare un URL del bot univoco.
Nella casella viene visualizzato un nome predefinito che include la data e l'ora, ad esempio EchoBot20190805125647. Per questa esercitazione è possibile usare il nome predefinito.
Per Sottoscrizione selezionare Versione di valutazione gratuita.
Per Gruppo di risorse selezionare SpeechEchoBotTutorial-ResourceGroup.
Per Piano di hosting selezionare SpeechEchoBotTutorial-AppServicePlan.
Seleziona Crea. Nella schermata finale della procedura guidata selezionare Fine.
Selezionare Pubblica. Visual Studio distribuisce il bot in Azure.
Nella finestra di output di Visual Studio verrà visualizzato un messaggio di esito positivo simile al seguente:
Publish Succeeded. Web App was published successfully https://EchoBot20190805125647.azurewebsites.net/
Verrà aperto il browser predefinito e verrà visualizzata una pagina con un messaggio che indica che il bot è pronto.
A questo punto, controllare il gruppo di risorse (SpeechEchoBotTutorial-ResourceGroup) nel portale di Azure. Verificare che contenga queste tre risorse:
Nome | Type | Ufficio |
---|---|---|
EchoBot20190805125647 | Servizio app | Stati Uniti occidentali |
SpeechEchoBotTutorial-AppServicePlan | Piano di servizio app | Stati Uniti occidentali |
SpeechEchoBotTutorial-Speech | Servizi di Azure AI | Stati Uniti occidentali |
Abilitare i WebSocket
È necessario apportare una piccola modifica alla configurazione in modo che il bot possa comunicare con il canale Direct Line Speech usando Web socket. Seguire questa procedura per abilitare i Web socket:
- Passare al portale di Azure e selezionare la risorsa del servizio app. Il nome della risorsa sarà simile a EchoBot20190805125647 (nome univoco dell'app).
- Nel riquadro a sinistra selezionare Configurazione in Impostazioni.
- Seleziona la scheda Impostazioni generali.
- Individuare l'interruttore per Web Socket e impostarlo su Sì.
- Seleziona Salva.
Suggerimento
È possibile usare i controlli nella parte superiore della pagina del servizio app di Azure per arrestare o riavviare il servizio. Ciò può risultare utile per la risoluzione dei problemi.
Creare una registrazione del canale
Dopo aver creato una risorsa del servizio app di Azure per ospitare il bot, il passaggio successivo consiste nel creare una registrazione del canale. La creazione di una registrazione del canale è un prerequisito per la registrazione del bot con i canali di Bot Framework, incluso il canale Direct Line Speech. Per altre informazioni su come i bot usano i canali, vedere Connettere un bot ai canali.
- Passare alla pagina del portale di Azure per la creazione di un bot di Azure.
- Specificare le informazioni seguenti:
Per Handle bot immettere SpeechEchoBotTutorial-BotRegistration-####. Sostituire #### con molti a scelta dell’utente.
Nota
L'handle del bot deve essere univoco a livello globale. Se si immette un numero e viene visualizzato il messaggio di errore "ID bot richiesto non disponibile", selezionare un numero diverso. Negli esempi seguenti viene usato 8726.
Per Sottoscrizione selezionare Versione di valutazione gratuita.
Per Gruppo di risorse selezionare SpeechEchoBotTutorial-ResourceGroup.
Per Posizione selezionare Stati Uniti occidentali.
Per Piano tariffario selezionare F0.
Ignorare Creazione automatica password e ID app.
- Nella parte inferiore del riquadro Bot di Azure selezionare Crea.
- Dopo la creazione, aprire la risorsa SpeechEchoBotTutorial-BotRegistration-#### nel portale di Azure.
- Nella sezione Impostazioni selezionare Configurazione.
- Per Endpoint di messaggistica immettere l'URL per l'app Web accodando il percorso /api/messages. Se, ad esempio, il nome univoco globale dell'app fosse EchoBot20190805125647, l'endpoint di messaggistica sarebbe
https://EchoBot20190805125647.azurewebsites.net/api/messages/
.
A questo punto, controllare il gruppo di risorse (SpeechEchoBotTutorial-ResourceGroup) nel portale di Azure. Dovrebbero essere visualizzate almeno quattro risorse:
Nome | Type | Ufficio |
---|---|---|
EchoBot20190805125647 | Servizio app | Stati Uniti occidentali |
SpeechEchoBotTutorial-AppServicePlan | Piano di servizio app | Stati Uniti occidentali |
SpeechEchoBotTutorial-BotRegistration-8726 | Servizio Bot | Generale |
SpeechEchoBotTutorial-Speech | Servizi di Azure AI | Stati Uniti occidentali |
Importante
La risorsa del Servizio di Azure AI Bot mostra l'area Globale, anche se è stata selezionata l'opzione Stati Uniti occidentali. Si tratta di un comportamento previsto.
Facoltativo: eseguire il test nella chat Web
Nella pagina Bot di Azure è presente l'opzione Test in chat Web nella sezione Impostazioni. Non funziona per impostazione predefinita con il bot perché la chat Web deve essere autenticata per il bot.
Se si vuole testare il bot distribuito con l'input di testo, seguire questa procedura. Questi passaggi sono facoltativi e non sono necessari per continuare con l'esercitazione.
Nel portale di Azure individuare e aprire la risorsa EchoBotTutorial-BotRegistration-####.
Nella sezione Impostazioni selezionare Configurazione. Copiare il valore in ID app Microsoft.
Aprire la soluzione Visual Studio EchoBot. In Esplora soluzioni trovare appsettings.json e fare doppio clic sul file.
Sostituire la stringa vuota accanto a MicrosoftAppId nel file JSON con il valore ID copiato.
Tornare al portale di Azure. Nella sezione Impostazioni selezionare Configurazione. Selezionare quindi Gestisci accanto a ID app Microsoft.
Selezionare Nuovo segreto client. Aggiungere una descrizione (ad esempio, chat Web) e selezionare Aggiungi. Copiare il nuovo segreto.
Sostituire la stringa vuota accanto a MicrosoftAppPassword nel file JSON con il valore del segreto copiato.
Salvare il file JSON. Il risultato sarà simile al codice seguente:
{ "MicrosoftAppId": "YourAppId", "MicrosoftAppPassword": "YourAppPassword" }
Pubblicare di nuovo l'app: fare clic con il pulsante destro del mouse sul progetto EchoBot in Esplora soluzioni di Visual Studio, selezionare Pubblica e quindi fare clic sul pulsante Pubblica.
Registrare il canale Direct Line Speech
A questo punto, è necessario registrare il bot con un canale Direct Line Speech. Questo canale crea una connessione tra il bot e un'app client compilata con Speech SDK.
Nel portale di Azure individuare e aprire la risorsa SpeechEchoBotTutorial-BotRegistration-####.
Nell'area Impostazioni selezionare Canali e quindi seguire questa procedura:
- In Altri canali selezionare Direct Line Speech.
- Esaminare il testo nella pagina Configura Direct Line Speech e quindi espandere il menu a discesa Account del servizio cognitivo.
- Selezionare la risorsa del servizio Voce creata in precedenza, ad esempio SpeechEchoBotTutorial-Speech, dal menu per associare il bot alla chiave della sottoscrizione.
- Ignorare il resto dei campi facoltativi.
- Seleziona Salva.
Nell'area Impostazioni selezionare Configurazione e quindi seguire questa procedura:
- Selezionare la casella di controllo Abilita l'endpoint di streaming. Questo passaggio è necessario per creare un protocollo di comunicazione basato su Web socket tra il bot e il canale Direct Line Speech.
- Seleziona Salva.
Per altre informazioni, vedere Connettere un bot a Direct Line Speech.
Eseguire il Client Assistente vocale Windows
Il Client Assistente vocale Windows è un'app Windows Presentation Foundation (WPF) in C# che usa Speech SDK per gestire la comunicazione con il bot tramite il canale Direct Line Speech. Usarlo per interagire con il bot e testarlo prima di scrivere un'app client personalizzata. È una soluzione open source, quindi è possibile scaricare il file eseguibile e lanciarlo oppure eseguire manualmente la creazione.
Il Client Assistente vocale Windows dispone di una semplice interfaccia utente che consente di configurare la connessione al bot, nonché di visualizzare la conversazione di testo, le attività di Bot Framework in formato JSON e le schede adattive. Supporta anche l'uso di parole chiave personalizzate. Si usa questo client per parlare con il bot e ricevere una risposta vocale.
Nota
A questo punto, verificare che il microfono e gli altoparlanti siano abilitati e funzionanti.
Passare al repository GitHub per Windows Voice Assistant Client.
Seguire le istruzioni fornite per una delle operazioni seguenti:
- Scaricare un file eseguibile predefinito in un pacchetto ZIP da eseguire
- Creare manualmente il file eseguibile clonando il repository e compilando il progetto
Aprire l'applicazione client VoiceAssistantClient.exe e configurarla per connettersi al bot seguendo le istruzioni nel repository GitHub.
Selezionare Riconnettersi e assicurarsi di visualizzare il messaggio "Nuova conversazione avviata- digitare o premere il pulsante del microfono".
Eseguire il test. Selezionare il pulsante del microfono e pronunciare alcune parole in inglese. Il testo riconosciuto verrà visualizzato mentre si parla. Al termine, il bot risponde con la propria voce, dicendo "echo" seguito dalle parole riconosciute.
È anche possibile usare il testo per comunicare con il bot. È sufficiente digitare il testo nella barra inferiore.
Risolvere gli errori nel Client Assistente vocale Windows
Se viene visualizzato un messaggio di errore nella finestra principale dell'app, usare questa tabella per identificare e risolvere il problema:
Message | Cosa devi fare |
---|---|
Error (AuthenticationFailure): WebSocket Upgrade failed with an authentication error (401). Verificare la presenza della chiave di risorsa corretta (o del token di autorizzazione) e del nome dell'area | Nella pagina Impostazioni dell'app assicurarsi di avere immesso correttamente la chiave e la relativa area. |
Error (ConnectionFailure): Connection was closed by the remote host. Error code: 1011. Error details: We couldn't connect to the bot before sending a message | Assicurarsi di avere selezionato la casella di controllo Abilita l'endpoint di streaming e/o di avere attivato i Web socket. Assicurarsi che il servizio app di Azure sia in esecuzione. In caso affermativo, provare a riavviarlo. |
Error (ConnectionFailure): Connection was closed by the remote host. Error code: 1002. Error details: The server returned status code '503' when status code '101' was expected | Assicurarsi di avere selezionato la casella di controllo Abilita l'endpoint di streaming e/o di avere attivato i Web socket. Assicurarsi che il servizio app di Azure sia in esecuzione. In caso affermativo, provare a riavviarlo. |
Error (ConnectionFailure): Connection was closed by the remote host. Error code: 1011. Error details: Response status code doesn't indicate success: 500 (InternalServerError) | Il bot ha specificato una voce neurale nel campo speak dell'attività di output, ma l'area di Azure associata alla chiave della risorsa non supporta le voci neurali. Vedere voci neurali e voci standard. |
Se le azioni nella tabella non consentono di risolvere il problema, vedere Assistenti vocali: domande frequenti. Se non è ancora possibile risolvere il problema dopo avere seguito tutti i passaggi di questa esercitazione, segnalare un nuovo problema nella pagina di GitHub relativa all'assistente vocale.
Nota sul timeout della connessione
Se si è connessi a un bot e non è stata eseguita alcuna attività negli ultimi cinque minuti, il servizio chiude automaticamente la connessione Web socket con il client e il bot. Questo si verifica per motivi strutturali. Nella barra inferiore viene visualizzato un messaggio che indica che si è verificato un timeout della connessione attiva ma è possibile ristabilire la connessione su richiesta.
Non è necessario selezionare il pulsante Riconnettersi. Premere il pulsante del microfono e iniziare a parlare, immettere un messaggio di testo o pronunciare la parola chiave (se abilitata). La connessione verrà ristabilita automaticamente.
Visualizzare le attività del bot
Ogni bot invia e riceve messaggi di attività. Nella finestra Log attività del client di Assistente vocale Windows, i log con timestamp indicano ogni attività che il client ha ricevuto dal bot. È anche possibile visualizzare le attività inviate dal client al bot usando il metodo DialogServiceConnector.SendActivityAsync. Quando si seleziona una voce del log, vengono visualizzati i dettagli dell'attività associata in formato JSON.
Ecco il codice JSON di esempio di un'attività ricevuta dal client:
{
"attachments":[],
"channelData":{
"conversationalAiData":{
"requestInfo":{
"interactionId":"8d5cb416-73c3-476b-95fd-9358cbfaebfa",
"version":"0.2"
}
}
},
"channelId":"directlinespeech",
"conversation":{
"id":"129ebffe-772b-47f0-9812-7c5bfd4aca79",
"isGroup":false
},
"entities":[],
"from":{
"id":"SpeechEchoBotTutorial-BotRegistration-8726"
},
"id":"89841b4d-46ce-42de-9960-4fe4070c70cc",
"inputHint":"acceptingInput",
"recipient":{
"id":"129ebffe-772b-47f0-9812-7c5bfd4aca79|0000"
},
"replyToId":"67c823b4-4c7a-4828-9d6e-0b84fd052869",
"serviceUrl":"urn:botframework:websocket:directlinespeech",
"speak":"<speak version='1.0' xmlns='https://www.w3.org/2001/10/synthesis' xml:lang='en-US'><voice name='en-US-JennyNeural'>Echo: Hello and welcome.</voice></speak>",
"text":"Echo: Hello and welcome.",
"timestamp":"2019-07-19T20:03:51.1939097Z",
"type":"message"
}
Per altre informazioni su ciò che viene restituito nell'output JSON, vedere i campi nell'attività. Per questa esercitazione, i campi importanti sono text e speak.
Visualizzare il codice sorgente del client per le chiamate a Speech SDK
Il client di Assistente vocale Windows usa il pacchetto NuGet Microsoft.CognitiveServices.Speech, che include Speech SDK. Un buon punto di partenza per esaminare il codice di esempio è il metodo InitSpeechConnector()
nel file VoiceAssistantClient\MainWindow.xaml.cs, che crea questi due oggetti di Speech SDK:
- DialogServiceConfig: per le impostazioni di configurazione come la chiave della risorsa e la relativa area.
- DialogServiceConnector: per gestire la connessione al canale e gli eventi di sottoscrizione client per la gestione del riconoscimento del parlato e delle risposte del bot.
Aggiungere l'attivazione di parole chiave personalizzate
Speech SDK supporta l'attivazione tramite parole chiave personalizzate. Analogamente a "Ehi Cortana" per un assistente Microsoft, è possibile scrivere un'app continuamente in ascolto di una parola chiave a scelta. Tenere presente che una parola chiave può essere una singola parola o una frase composta da più parole.
Nota
Il termine parola chiave viene spesso usato in modo intercambiabile con il termine parola di riattivazione. Nella documentazione Microsoft vengono usati entrambi i termini.
Il rilevamento delle parole chiave avviene nell'app client. Se si usa una parola chiave, l'audio viene trasmesso al canale Direct Line Speech solo se viene rilevata la parola chiave. Il canale Direct Line Speech include un componente di verifica della parola chiave che esegue un'elaborazione più complessa nel cloud per verificare che la parola chiave scelta sia all'inizio del flusso audio. Se la verifica delle parole chiave ha esito positivo, il canale comunica con il bot.
Seguire questa procedura per creare un modello di parola chiave, configurare Windows Voice Assistant Client per usare il modello e testarlo con il bot:
- Creare una parola chiave personalizzata usando il servizio Voce.
- Decomprimere il file del modello scaricato nel passaggio precedente. Il nome deve essere correlato alla parola chiave. Si sta cercando un file denominato kws.table.
- In Windows Voice Assistant Client individuare il menu Impostazioni (icona a forma di ingranaggio in alto a destra). Per Percorso del file modello immettere il percorso completo per il file kws.table del passaggio 2.
- Seleziona la casella di controllo Abilitato. Accanto alla casella di controllo verrà visualizzato questo messaggio: "Will listen for the keyword upon next connection" (Sarà in ascolto della parola chiave al successivo collegamento). Se è stato specificato il file errato o un percorso non valido, verrà visualizzato un messaggio di errore.
- Immettere i valori per Chiave di sottoscrizione e Area chiave di sottoscrizione, quindi selezionare OK per chiudere il menu Impostazioni.
- Selezionare Riconnettersi. Verrà visualizzato il messaggio: "New conversation started - type, press the microphone button, or say the keyword” (Nuova conversazione avviata: digitare, premere il pulsante del microfono o pronunciare la parola chiave). L'app rimane ora continuamente in ascolto.
- Pronunciare qualsiasi frase che inizi con la parola chiave. Ad esempio: "{parola chiave}, che ora è?" Non è necessario fare una pausa dopo aver pronunciato la parola chiave. Al termine, avvengono due eventi:
- Viene visualizzata una trascrizione di ciò che è stato detto.
- Si sente la risposta del bot.
- Continuare a sperimentare i tre tipi di input supportati dal bot:
- Immettere testo sulla barra inferiore
- Premere l'icona del microfono e parlare
- Pronunciare una frase che inizi con la parola chiave
Visualizzare il codice sorgente che consente il rilevamento della parola chiave
Nel codice sorgente di Windows Voice Assistant Client usare questi file per esaminare il codice che consente il rilevamento della parola chiave:
- VoiceAssistantClient\Models.cs include una chiamata al metodo KeywordRecognitionModel.fromFile() di Speech SDK. Questo metodo viene usato per creare un'istanza del modello da un file locale su disco.
- VoiceAssistantClient\MainWindow.xaml.cs include una chiamata al metodo DialogServiceConnector.StartKeywordRecognitionAsync() di Speech SDK. Questo metodo attiva il rilevamento continuo delle parole chiave.
Facoltativo: modificare la lingua e la voce del bot
Il bot creato ascolta e risponde in inglese, usando per la sintesi vocale una voce predefinita nella lingua inglese (Stati Uniti). Tuttavia, non è obbligatorio usare l'inglese o una voce predefinita.
In questa sezione si apprende come modificare la lingua usata dal bot per ascoltare e rispondere. Si apprende anche come selezionare una voce diversa per tale lingua.
Modificare la lingua
È possibile scegliere una delle lingue indicate nella tabella relativa al riconoscimento vocale. L'esempio seguente consente di modificare la lingua impostando il tedesco.
Aprire l'app Windows Voice Assistant Client, selezionare il pulsante Impostazioni (icona a forma di ingranaggio in alto a destra) e immettere de-de nel campo Lingua. Si tratta del valore delle impostazioni locali indicato nella tabella relativa alriconoscimento vocale.
Questo passaggio imposta la lingua parlata da riconoscere, sostituendo il valore predefinito en-us. Indica inoltre al canale Direct Line Speech di usare una voce tedesca predefinita per la risposta del bot.
Chiudere la pagina Impostazioni e quindi selezionare il pulsante Riconnettersi per stabilire una nuova connessione all'echo bot.
Selezionare il pulsante del microfono e pronunciare una frase in tedesco. Viene visualizzato il testo riconosciuto e l'echo bot risponde con la voce tedesca predefinita.
Modificare la voce predefinita del bot
È possibile selezionare la voce per la sintesi vocale e controllare la pronuncia se il bot specifica la risposta nel linguaggio SSML (Speech Synthesis Markup Language) anziché come testo semplice. L'echo bot non usa SSML, ma è possibile modificare facilmente il codice per farlo.
L'esempio seguente aggiunge SSML alla risposta dell'echo bot in modo che venga usata la voce tedesca de-DE-RalfNeural
(una voce maschile) invece della voce femminile predefinita. Vedere l'elenco di voci standard e l'elenco di voci neurali supportate per la lingua.
Aprire samples\csharp_dotnetcore\02.echo-bot\echo-bot.cs.
Trovare queste righe:
var replyText = $"Echo: {turnContext.Activity.Text}"; await turnContext.SendActivityAsync(MessageFactory.Text(replyText, replyText), cancellationToken);
Sostituirle con il codice seguente:
var replyText = $"Echo: {turnContext.Activity.Text}"; var replySpeak = @"<speak version='1.0' xmlns='https://www.w3.org/2001/10/synthesis' xml:lang='de-DE'> <voice name='de-DE-RalfNeural'>" + $"{replyText}" + "</voice></speak>"; await turnContext.SendActivityAsync(MessageFactory.Text(replyText, replySpeak), cancellationToken);
Compilare la soluzione in Visual Studio e correggere eventuali errori di compilazione.
Il secondo argomento nel metodo MessageFactory.Text
imposta il campo speak dello schema Activity nella risposta del bot. Con la modifica precedente, viene eseguita la sostituzione da testo semplice a SSML per specificare una voce tedesca non predefinita.
Distribuire di nuovo il bot
Dopo avere apportato la modifica necessaria al bot, il passaggio successivo consiste nel pubblicarlo di nuovo nel servizio app di Azure e provarlo:
Nella finestra Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto EchoBot e scegliere Pubblica.
La configurazione di distribuzione precedente è già stata caricata come predefinita. Selezionare Pubblica accanto a EchoBot20190805125647 - Distribuzione Web.
Verrà visualizzato il messaggio Pubblicazione riuscita nella finestra di output di Visual Studio e verrà aperta una pagina Web con un messaggio che indica che il bot è pronto.
Aprire l'app Windows Voice Assistant Client. Selezionare il pulsante Impostazioni (icona a forma di ingranaggio in alto a destra) e assicurarsi che sia ancora presente de-de nel campo Lingua.
Seguire le istruzioni in Eseguire Windows Voice Assistant Client per riconnettersi con il bot appena distribuito, parlare nella nuova lingua e ascoltare la risposta del bot in tale lingua con la nuova voce.
Pulire le risorse
Se non si intende continuare a usare l'echo bot distribuito in questa esercitazione, è possibile rimuoverlo insieme a tutte le risorse di Azure associate eliminando il gruppo di risorse di Azure:
- Nel portale di Azure selezionare Gruppi di risorse in Servizi di Azure.
- Individuare il gruppo di risorse SpeechEchoBotTutorial-ResourceGroup. Selezionare i tre puntini (…).
- Selezionare Elimina gruppo di risorse.
Esplora la documentazione
- Eseguire la distribuzione in un'area di Azure nelle vicinanze per osservare il miglioramento del tempo di risposta del bot.
- Eseguire la distribuzione in un'area di Azure che supporta voci neurali di alta qualità per la sintesi vocale.
- Ottenere i prezzi associati al canale Direct Line Speech:
- Prezzi del servizio bot
- Servizio Voce
- Creare e distribuire un bot abilitato per le funzionalità vocali:
- Creare un bot di Bot Framework. Quindi registrarlo con il canale Direct Line Speech e personalizzarlo per le funzionalità vocali.
- Esplorare le soluzioni di Bot Framework esistenti: creare un assistente virtuale ed estenderlo a Direct Line Speech.