Che cos'è il riconoscimento vocale incorporato?

Riconoscimento vocale incorporato è progettato per scenari di riconoscimento vocale e sintesi vocale sul dispositivo in cui la connettività cloud è intermittente o non disponibile. Ad esempio, è possibile usare la voce integrata in apparecchiature industriali, un'unità di aria condizionata dotata di comando vocale o un'auto che potrebbe uscire dal raggio d'azione. È anche possibile sviluppare soluzioni cloud ibride e offline. Per gli scenari in cui i dispositivi devono trovarsi in un ambiente sicuro, ad esempio una banca o un'entità governativa, è necessario considerare prima di tutto i contenitori disconnessi.

Importante

Microsoft limita l'accesso al riconoscimento vocale incorporato. È possibile richiedere l'accesso tramite Azure Speech nei Foundry Tools embedded speech limited access review. Per altre informazioni, vedere Accesso limitato per il riconoscimento vocale incorporato.

Requisiti della piattaforma

Il riconoscimento vocale incorporato è incluso in Speech SDK (versione 1.24.1 e successive) per C#, C++ e Java. Vedere i requisiti generali di installazione di Speech SDK per i dettagli specifici del linguaggio di programmazione e della piattaforma di destinazione.

Di seguito sono riportate stime generali del consumo di memoria con riconoscimento vocale incorporato. I numeri finali dipendono dalla configurazione delle funzionalità.

  • Riconoscimento vocale o traduzione: dimensioni totali dei file di un modello + 200 MB.
  • Sintesi vocale: 100-200 MB a seconda delle impostazioni locali.

Scegliere l'ambiente di destinazione

Richiede Android 8.0 (livello API 26) o versione successiva nell'hardware Arm64 (arm64-v8a) o Arm32 (armeabi-v7a).

Limitazioni

  • Il riconoscimento vocale incorporato è disponibile solo con gli SDK C#, C++e Java. Gli altri SDK di Speech, l'interfaccia della riga di comando di Speech e le API REST non supportano la funzionalità vocale incorporata.
  • Il riconoscimento vocale incorporato supporta solo formati audio WAV mono a 16 bit con frequenza di campionamento di 8 kHz o 16 kHz e codifica PCM.
  • Le voci neurali incorporate supportano i formati 16 o 24 kHz RIFF/RAW.

Pacchetti di Speech SDK incorporati

Per le applicazioni incorporate C#, installare i pacchetti Speech SDK per C#seguenti:

Pacchetto Descrizione
Microsoft. CognitiveServices.Speech Obbligatorio per usare Speech SDK
Microsoft. CognitiveServices.Speech.Extension.Embedded.SR Obbligatorio per il riconoscimento vocale incorporato
Microsoft. CognitiveServices.Speech.Extension.Embedded.TTS Obbligatorio per la sintesi vocale incorporata
Microsoft. CognitiveServices.Speech.Extension.ONNX.Runtime Obbligatorio per il riconoscimento vocale incorporato e la sintesi
Microsoft.CognitiveServices.Speech.Extension.Telemetry Obbligatorio per il riconoscimento vocale incorporato e la sintesi

Per le applicazioni incorporate C++, installare i pacchetti Speech SDK per C++seguenti:

Pacchetto Descrizione
Microsoft. CognitiveServices.Speech Obbligatorio per usare Speech SDK
Microsoft. CognitiveServices.Speech.Extension.Embedded.SR Obbligatorio per il riconoscimento vocale incorporato
Microsoft. CognitiveServices.Speech.Extension.Embedded.TTS Obbligatorio per la sintesi vocale incorporata
Microsoft. CognitiveServices.Speech.Extension.ONNX.Runtime Obbligatorio per il riconoscimento vocale incorporato e la sintesi
Microsoft.CognitiveServices.Speech.Extension.Telemetry Obbligatorio per il riconoscimento vocale incorporato e la sintesi

Scegliere l'ambiente di destinazione

Per Java applicazioni incorporate, aggiungere client-sdk-embedded (.jar) come dipendenza. Questo pacchetto supporta il riconoscimento vocale cloud, incorporato e ibrido.

Importante

Non aggiungere client-sdk nello stesso progetto, perché supporta solo i servizi di riconoscimento vocale cloud.

Seguire questa procedura per installare Speech SDK per Java usando Apache Maven:

  1. Installare Apache Maven.
  2. Aprire un prompt dei comandi in cui si vuole il nuovo progetto e creare un nuovo pom.xml file.
  3. Copiare il contenuto XML seguente in pom.xml:
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>com.microsoft.cognitiveservices.speech.samples</groupId>
        <artifactId>quickstart-eclipse</artifactId>
        <version>1.0.0-SNAPSHOT</version>
        <build>
            <sourceDirectory>src</sourceDirectory>
            <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.7.0</version>
                <configuration>
                <source>1.8</source>
                <target>1.8</target>
                </configuration>
            </plugin>
            </plugins>
        </build>
        <dependencies>
            <dependency>
            <groupId>com.microsoft.cognitiveservices.speech</groupId>
            <artifactId>client-sdk-embedded</artifactId>
            <version>1.43.0</version>
            </dependency>
        </dependencies>
    </project>
    
  4. Eseguire il seguente comando Maven per installare il Speech SDK e le dipendenze.
    mvn clean dependency:copy-dependencies
    

Modelli e voci

Per il riconoscimento vocale incorporato, è necessario scaricare i modelli di riconoscimento vocale per la sintesi vocale e le voci per il riconoscimento vocale. Le istruzioni vengono fornite al completamento corretto del processo di verifica dell'accesso limitato .

Sono disponibili i modelli da voce a testo seguenti: da-DK, de-DE, en-AU, en-CA, en-GB, en-IE, en-IN, en-NZ, en-US, es-ES, es-MX, fr-CA, fr-FR, it-IT, ja-JP, ko-KR, pt-BR, pt-PT, zh-CN, zh-HK e zh-TW.

Tutte le lingue di sintesi vocale qui (tranne fa-IR, Persiano (Iran)) sono disponibili preconfigurate con 1 voce femminile e/o 1 voce maschile selezionata. Siamo lieti di ricevere il vostro input per aiutarci a misurare la domanda di più lingue e voci.

Configurazione del riconoscimento vocale incorporato

Per le applicazioni connesse al cloud, come illustrato nella maggior parte degli esempi di Speech SDK, si usa l'oggetto SpeechConfig con una chiave API e un endpoint. Per il riconoscimento vocale incorporato, non si usa una risorsa Foundry per Voce. Anziché una risorsa cloud, si usano i modelli e le voci scaricati nel dispositivo locale.

Utilizzare l'oggetto EmbeddedSpeechConfig per impostare la posizione dei modelli o delle voci. Se l'applicazione viene usata sia per il riconoscimento vocale che per la sintesi vocale, è possibile usare lo stesso EmbeddedSpeechConfig oggetto per impostare la posizione dei modelli e delle voci.

// Provide the location of the models and voices.
List<string> paths = new List<string>();
paths.Add("C:\\dev\\embedded-speech\\stt-models");
paths.Add("C:\\dev\\embedded-speech\\tts-voices");
var embeddedSpeechConfig = EmbeddedSpeechConfig.FromPaths(paths.ToArray());

// For speech to text
embeddedSpeechConfig.SetSpeechRecognitionModel(
    "Microsoft Speech Recognizer en-US FP Model V8",
    Environment.GetEnvironmentVariable("EMBEDDED_SPEECH_MODEL_LICENSE"));

// For text to speech
embeddedSpeechConfig.SetSpeechSynthesisVoice(
    "Microsoft Server Speech Text to Speech Voice (en-US, JennyNeural)",
    Environment.GetEnvironmentVariable("EMBEDDED_SPEECH_MODEL_LICENSE"));
embeddedSpeechConfig.SetSpeechSynthesisOutputFormat(SpeechSynthesisOutputFormat.Riff24Khz16BitMonoPcm);

Suggerimento

La funzione GetEnvironmentVariable è definita nell'argomento di avvio rapido per il riconoscimento vocale e avvio rapido per la conversione del testo in voce.

// Provide the location of the models and voices.
vector<string> paths;
paths.push_back("C:\\dev\\embedded-speech\\stt-models");
paths.push_back("C:\\dev\\embedded-speech\\tts-voices");
auto embeddedSpeechConfig = EmbeddedSpeechConfig::FromPaths(paths);

// For speech to text
embeddedSpeechConfig->SetSpeechRecognitionModel((
    "Microsoft Speech Recognizer en-US FP Model V8",
    GetEnvironmentVariable("EMBEDDED_SPEECH_MODEL_LICENSE"));

// For text to speech
embeddedSpeechConfig->SetSpeechSynthesisVoice(
    "Microsoft Server Speech Text to Speech Voice (en-US, JennyNeural)",
    GetEnvironmentVariable("EMBEDDED_SPEECH_MODEL_LICENSE"));
embeddedSpeechConfig->SetSpeechSynthesisOutputFormat(SpeechSynthesisOutputFormat::Riff24Khz16BitMonoPcm);
// Provide the location of the models and voices.
List<String> paths = new ArrayList<>();
paths.add("C:\\dev\\embedded-speech\\stt-models");
paths.add("C:\\dev\\embedded-speech\\tts-voices");
var embeddedSpeechConfig = EmbeddedSpeechConfig.fromPaths(paths);

// For speech to text
embeddedSpeechConfig.setSpeechRecognitionModel(
    "Microsoft Speech Recognizer en-US FP Model V8",
    System.getenv("EMBEDDED_SPEECH_MODEL_LICENSE"));

// For text to speech
embeddedSpeechConfig.setSpeechSynthesisVoice(
    "Microsoft Server Speech Text to Speech Voice (en-US, JennyNeural)",
    System.getenv("EMBEDDED_SPEECH_MODEL_LICENSE"));
embeddedSpeechConfig.setSpeechSynthesisOutputFormat(SpeechSynthesisOutputFormat.Riff24Khz16BitMonoPcm);

Esempi di codice di riconoscimento vocale incorporato

È possibile trovare esempi vocali incorporati pronti all'uso su GitHub. Per le osservazioni sui progetti da zero, vedere la documentazione specifica degli esempi:

È possibile trovare esempi vocali incorporati pronti all'uso su GitHub. Per le osservazioni sui progetti da zero, vedere la documentazione specifica degli esempi:

È possibile trovare esempi vocali incorporati pronti all'uso su GitHub. Per le osservazioni sui progetti da zero, vedere la documentazione specifica degli esempi:

Voce ibrida

Il discorso ibrido con l'oggetto HybridSpeechConfig usa per impostazione predefinita il servizio di riconoscimento vocale cloud e il riconoscimento vocale incorporato come alternativa nel caso in cui la connettività cloud sia limitata o lenta.

Con la configurazione ibrida del riconoscimento vocale per da voce a testo (modelli di riconoscimento), il riconoscimento vocale incorporato viene utilizzato quando la connessione al servizio cloud fallisce dopo tentativi ripetuti. Il riconoscimento potrebbe continuare a usare di nuovo il servizio cloud se la connessione viene ripresa in un secondo momento.

Con la configurazione vocale ibrida per la sintesi vocale (voci), la sintesi incorporata e cloud vengono eseguite in parallelo e il risultato finale viene selezionato in base alla velocità di risposta. Il risultato migliore viene valutato di nuovo in ogni nuova richiesta di sintesi.

Servizi vocali nel cloud

Per il riconoscimento vocale nel cloud, si usa l'oggetto SpeechConfig , come illustrato nella guida introduttiva al riconoscimento vocale e nella guida introduttiva per il riconoscimento vocale. Per eseguire le guide introduttive per il riconoscimento vocale incorporato, è possibile sostituire SpeechConfig con EmbeddedSpeechConfig o HybridSpeechConfig. La maggior parte degli altri codici di riconoscimento vocale e sintesi vocale è identica, sia che si usi la configurazione cloud, incorporata o ibrida.

Funzionalità di voci incorporate

Per le voci incorporate, è essenziale notare che alcuni tag SSML (Speech Synthesis Markup Language) potrebbero non essere attualmente supportati a causa delle differenze nella struttura del modello. Per informazioni dettagliate sui tag SSML non supportati, vedere la tabella seguente.

Livello 1 Livello 2 Valori secondari Supporto NTTS integrato
Audio Src No
Segnalibro
Pausa Forza
Tempo
Silenzio digitare Leading, Tailing, Comma-exact e così via. No
Valore No
Enfasi Livello No
Lang No
Lessico Uri
Matematica No
msttsaudioduration Valore No
msttsbackgroundaudio Src No
Volume No
dissolvenza No
dissolvenza No
msttsexpress-as Stile 1
styledegree No
Ruolo No
msttssilence No
msttsviseme digitare redlips_front, EspressioneFacciale No
P
Fonema Alfabeto ipa, sapi, ups, ecc.
pH
Prosodia Contorno Supporto a livello di frasi, solo en-US e zh-CN a livello di parola
Tono
Gamma
Tasso
Volume
s
say-as interpreta come caratteri, ortografia, numero_cifra, data e così via.
Formato
Dettaglio
Sub Alias
Parlare
Voce No

1 Lo msttsexpress-as stile è supportato solo per la en-US-JennyNeural voce.