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:
- Installare Apache Maven.
- Aprire un prompt dei comandi dove si vuole creare il nuovo progetto e creare un nuovo file
pom.xml
. - 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>
- 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 | Sì | ||
break | forza | Sì | |
Ora | Sì | ||
silenzio | type | Interlinea, spazio, virgola prevista e così via. | No |
value | No | ||
emphasis | level | No | |
lang | No | ||
lessico | uri | Sì | |
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 | Sì | ||
phoneme | alphabet | ipa, sapi, ups e così via. | Sì |
ph | Sì | ||
prosodia | contorno | Supporto a livello di frasi, solo a livello di parola en-US e zh-CN | Sì |
pitch | Sì | ||
range | Sì | ||
rate | Sì | ||
volume | Sì | ||
s | Sì | ||
say-as | interpret-as | caratteri, ortografia, number_digit, data e così via. | Sì |
format | Sì | ||
detail | Sì | ||
secondario | alias | Sì | |
speak | Sì | ||
voice | No |