Cos'è Voce incorporata?

Il parlato incorporato è progettato per gli scenari su dispositivo conversione della voce in testo scritto e sintesi vocale, in cui la connettività cloud è intermittente o non disponibile. Ad esempio, è possibile usare il parlato incorporato per apparecchiature industriali, ad esempio, un'unità di aria condizionata abilitata a voce o un'auto che può andare fuori 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 innanzitutto i contenitori disconnessi.

Importante

Microsoft limita l'accesso al parlato incorporato. È possibile richiedere l'accesso tramite verifica di accesso limitato al parlato incorporato della Voce di Azure AI. Per altre informazioni vedere Accesso limitato per il parlato incorporato.

Requisiti di piattaforma

Il parlato incorporato è incluso in Speech SDK (versione 1.24.1 e successive) per C#, C++e Java. Fare riferimento ai Requisiti generali per l’installazione di Speech SDK per informazioni dettagliate sul linguaggio di programmazione e sulla piattaforma di destinazione.

Scegliere l'ambiente di destinazione

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

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

Limiti

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

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

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

Pacchetti Speech SDK con parlato incorporato

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

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 seguenti pacchetti Speech SDK per C++:

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 incorporate Java aggiungere client-sdk-embedded (.jar) come dipendenza. Questo pacchetto supporta il parlato cloud, incorporato e ibrido.

Importante

Non aggiungere client-sdk nello stesso progetto, poiché supporta solo i servizi Voce cloud.

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

  1. Installare Apache Maven.
  2. Aprire un prompt dei comandi dove si vuole creare il nuovo progetto e creare un nuovo file pom.xml.
  3. Copiare il seguente contenuto XML 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.40.0</version>
            </dependency>
        </dependencies>
    </project>
    
  4. Eseguire il seguente comando Maven per installare Speech SDK e le relative dipendenze.
    mvn clean dependency:copy-dependencies
    

Modelli e voci

Per il parlato incorporato è necessario scaricare i modelli di riconoscimento vocale per la conversione della voce in testo scritto e le voci per la sintesi vocale. Le istruzioni sono fornite al completamento corretto del processo di verifica di accesso limitato.

Sono disponibili i seguenti modelli di riconoscimento vocale: 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, and zh-TW.

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

Configurazione del parlato incorporato

Per le applicazioni connesse al cloud, come mostrato nella maggior parte degli esempi di Speech SDK, usare l'oggetto SpeechConfig con una chiave e un'area della risorsa Voce. Per il parlato incorporato non usare una risorsa Voce. Al posto di una risorsa cloud usare modelli e voci scaricati nel dispositivo locale.

Utilizzare l'oggetto EmbeddedSpeechConfig per impostare il percorso dei modelli o delle voci. Se l'applicazione viene usata sia per la conversione della voce in testo scritto che per la sintesi vocale, è possibile usare lo stesso oggetto EmbeddedSpeechConfig 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 viene definita inAvvio rapido: Conversione della voce in testo scritto e in Avvio rapido: Sintesi vocale.

// 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 parlato incorporato

È possibile trovare esempi di parlato incorporato pronti per l'uso in GitHub. Per i commenti sui progetti da zero vedere la documentazione specifica per gli esempi:

È possibile trovare esempi di parlato incorporato pronti per l'uso in GitHub. Per i commenti sui progetti da zero vedere la documentazione specifica per gli esempi:

È possibile trovare esempi di parlato incorporato pronti per l'uso in GitHub. Per i commenti sui progetti da zero vedere la documentazione specifica per gli esempi:

Parlato ibrido

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

Con la configurazione del parlato ibrido per (modelli di riconoscimento) la conversione della voce in testo scritto il parlato incorporato viene usato quando la connessione al servizio cloud ha esito negativo dopo diversi tentativi. Il riconoscimento potrebbe continuare a usare di nuovo il servizio cloud, se la connessione viene ripresa in un secondo momento.

Con la configurazione del parlato ibrido per (le voci) la sintesi vocalela sintesi incorporata e la sintesi cloud vengono eseguite in parallelo selezionando il risultato finale in base alla velocità di risposta. Il risultato migliore viene valutato di nuovo in ogni nuova richiesta di sintesi.

Parlato cloud

Per il parlato cloud usare l'oggetto SpeechConfig come mostrato in Avvio rapido: Conversione della voce in testo scritto e in Avvio rapido: Sintesi vocale. Per eseguire gli avvii rapidi sul parlato incorporato è possibile sostituire SpeechConfig con EmbeddedSpeechConfig o HybridSpeechConfig. La maggior parte degli altri codici di riconoscimento e sintesi vocale è identica nella 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
Ora
silenzio type Interlinea, spazio, virgola prevista e così via. No
value No
emphasis level No
lang No
lessico uri
funzioni matematiche No
msttsaudioduration value No
msttsbackgroundaudio src No
volume No
fadein No
fadeout No
msttsexpress-as style No
styledegree No
ruolo No
msttssilence No
msttsviseme type redlips_front, FacialExpression No
p
phoneme alphabet 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