Riconoscimento vocale incorporato

Attenzione

Questo articolo fa riferimento a CentOS, una distribuzione Linux vicina allo stato end of life (EOL). Prendere in considerazione l'uso e la pianificazione di conseguenza.

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 il riconoscimento vocale incorporato in apparecchiature industriali, un'unità di aria condizionata abilitata per la voce o un'auto che potrebbe uscire dall'intervallo. È 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 la verifica di accesso limitato al riconoscimento vocale incorporato di Riconoscimento vocale incorporato per intelligenza artificiale di Azure. Per altre informazioni, vedere Accesso limitato per il riconoscimento vocale incorporato.

Requisiti di 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.

Scegliere l'ambiente di destinazione

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

La funzionalità TTS incorporata con voci neurali è supportata solo in Arm64.

Limiti

Il riconoscimento vocale incorporato è disponibile solo con gli SDK C#, C++e Java. Gli altri SDK voce, l'interfaccia della riga di comando di Voce e le API REST non supportano il riconoscimento vocale incorporato.

Il riconoscimento vocale incorporato supporta solo formati audio WAV con codifica WAV mono a 16 bit, 8 kHz o 16 kHz.

Le voci neurali incorporate supportano 24 kHz RIFF/RAW, con un requisito di RAM di 100 MB.

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 le applicazioni java 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.35.0</version>
            </dependency>
        </dependencies>
    </project>
    
  4. Eseguire il comando Maven seguente per installare 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 vocali seguenti: da-DK, de-DE, en-AU, en-CA, en-GB, en-IE, en-IN, 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 impostazioni locali di sintesi vocale qui (tranne fa-IR, Persiano (Iran)) sono disponibili per impostazione predefinita con 1 voce femminile selezionata 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 con una chiave di risorsa voce e un'area SpeechConfig . Per il riconoscimento vocale incorporato, non si usa una risorsa 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("MODEL_KEY"));

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

Suggerimento

La GetEnvironmentVariable funzione è definita nell'argomento di avvio rapido per la sintesi vocale e nel testo della guida introduttiva.

// 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("MODEL_KEY"));

// For text to speech
embeddedSpeechConfig->SetSpeechSynthesisVoice(
    "Microsoft Server Speech Text to Speech Voice (en-US, JennyNeural)",
    GetEnvironmentVariable("VOICE_KEY"));
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("MODEL_KEY"));

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

Esempi di codice di riconoscimento vocale incorporato

È possibile trovare pronti per l'uso di esempi di riconoscimento vocale incorporati in GitHub. Per le osservazioni sui progetti da zero, vedere la documentazione specifica degli esempi:

È possibile trovare pronti per l'uso di esempi di riconoscimento vocale incorporati in GitHub. Per le osservazioni sui progetti da zero, vedere la documentazione specifica degli esempi:

È possibile trovare pronti per l'uso di esempi di riconoscimento vocale incorporati in GitHub. Per le osservazioni sui progetti da zero, vedere la documentazione specifica degli esempi:

Riconoscimento vocale ibrido

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

Con la configurazione ibrida del riconoscimento vocale per il riconoscimento vocale (modelli di riconoscimento), il riconoscimento vocale incorporato viene usato quando la connessione al servizio cloud ha esito negativo 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.

Riconoscimento vocale 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 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 in NTTS incorporato
audio src No
segnalibro
break forza No
Ora No
Silenzio type Leading, Tailing, Comma-exact e così via. No
value No
emphasis level No
lang No
Lessico uri
funzioni matematiche No
msttsaudioduration value No
msttsbackgroundaudio src No
volume No
dissolvenza No
dissolvenza No
msttsexpress-as style No
styledegree No
ruolo No
msttssilence No
msttsviseme type redlips_front, FacialExpression No
p
phoneme Alfabeto ipa, sapi, ups e così via.
Ph
Prosodia Contorno Supporto a livello di frasi, solo a livello di parola en-US e zh-CN
pitch
range
rate
volume
s
say-as interpret-as caratteri, ortografia, number_digit, data e così via.
format
detail
secondario alias
speak
voice No

Passaggi successivi