Co to jest osadzona mowa?
Osadzona mowa jest przeznaczona do zamiany mowy na urządzenie na tekst i tekst na mowę , w których łączność w chmurze jest sporadycznie lub niedostępna. Można na przykład użyć mowy osadzonej w sprzęcie przemysłowym, jednostce klimatyzacji z włączoną obsługą głosu lub samochodzie, który może podróżować poza zasięgiem. Możesz również opracowywać rozwiązania chmury hybrydowej i offline. W przypadku scenariuszy, w których urządzenia muszą znajdować się w bezpiecznym środowisku, na przykład banku lub jednostki rządowej, należy najpierw rozważyć odłączenie kontenerów.
Ważne
Firma Microsoft ogranicza dostęp do osadzonej mowy. Możesz ubiegać się o dostęp za pomocą przeglądu osadzonej mowy usługi Mowa w usłudze Azure AI. Aby uzyskać więcej informacji, zobacz Ograniczony dostęp do osadzonej mowy.
Wymagania dotyczące platformy
Osadzona mowa jest dołączona do zestawu Speech SDK (wersja 1.24.1 i nowsza) dla języków C#, C++i Java. Zapoznaj się z ogólnymi wymaganiami dotyczącymi instalacji zestawu SPEECH SDK, aby uzyskać szczegółowe informacje dotyczące języka programowania i platformy docelowej.
Wybieranie środowiska docelowego
Wymaga systemu Android 7.0 (poziom 24 interfejsu API) lub nowszego na sprzęcie Arm64 (arm64-v8a
) lub Arm32 (armeabi-v7a
).
Osadzona usługa TTS z głosami neuronowymi jest obsługiwana tylko w usłudze Arm64.
Ograniczenia
Osadzona mowa jest dostępna tylko w przypadku zestawów SDK języka C#, C++i Java. Inne zestawy SDK rozpoznawania mowy, interfejs wiersza polecenia usługi Mowa i interfejsy API REST nie obsługują osadzonej mowy.
Osadzone rozpoznawanie mowy obsługuje tylko formaty audio WAV zakodowane w formacie WAV mono, 8 kHz lub 16 kHz.
Osadzone neuronowe głosy obsługują 24 kHz RIFF/RAW z wymaganiem pamięci RAM wynoszącym 100 MB.
Pakiety osadzonego zestawu SPEECH SDK
W przypadku aplikacji osadzonych w języku C# zainstaluj następujący zestaw Speech SDK dla pakietów języka C#:
Pakiet | opis |
---|---|
Microsoft.CognitiveServices.Speech | Wymagane do korzystania z zestawu SPEECH SDK |
Microsoft.CognitiveServices.Speech.Extension.Embedded.SR | Wymagane do rozpoznawania mowy osadzonej |
Microsoft.CognitiveServices.Speech.Extension.Embedded.TTS | Wymagane do syntezy mowy osadzonej |
Microsoft.CognitiveServices.Speech.Extension.ONNX.Runtime | Wymagane do rozpoznawania i syntezy mowy osadzonej |
Microsoft.CognitiveServices.Speech.Extension.Telemetry | Wymagane do rozpoznawania i syntezy mowy osadzonej |
W przypadku aplikacji osadzonych języka C++ zainstaluj następujący zestaw Speech SDK dla pakietów języka C++:
Pakiet | opis |
---|---|
Microsoft.CognitiveServices.Speech | Wymagane do korzystania z zestawu SPEECH SDK |
Microsoft.CognitiveServices.Speech.Extension.Embedded.SR | Wymagane do rozpoznawania mowy osadzonej |
Microsoft.CognitiveServices.Speech.Extension.Embedded.TTS | Wymagane do syntezy mowy osadzonej |
Microsoft.CognitiveServices.Speech.Extension.ONNX.Runtime | Wymagane do rozpoznawania i syntezy mowy osadzonej |
Microsoft.CognitiveServices.Speech.Extension.Telemetry | Wymagane do rozpoznawania i syntezy mowy osadzonej |
Wybieranie środowiska docelowego
W przypadku aplikacji osadzonych w języku Java dodaj element client-sdk-embedded (.jar
) jako zależność. Ten pakiet obsługuje mowę w chmurze, osadzoną i hybrydową.
Ważne
Nie dodawaj zestawu client-sdk w tym samym projekcie, ponieważ obsługuje tylko usługi mowy w chmurze.
Wykonaj następujące kroki, aby zainstalować zestaw SPEECH SDK dla języka Java przy użyciu narzędzia Apache Maven:
- Zainstaluj narzędzie Apache Maven.
- Otwórz wiersz polecenia, w którym chcesz utworzyć nowy projekt, i utwórz nowy
pom.xml
plik. - Skopiuj następującą zawartość XML do
pom.xml
pliku :<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>
- Uruchom następujące polecenie narzędzia Maven, aby zainstalować zestaw SPEECH SDK i zależności.
mvn clean dependency:copy-dependencies
Modele i głosy
W przypadku osadzonej mowy należy pobrać modele rozpoznawania mowy na potrzeby zamiany mowy na tekst i głosy na zamianę tekstu na mowę. Instrukcje są udostępniane po pomyślnym zakończeniu procesu przeglądu ograniczonego dostępu.
Dostępne są następujące modele mowy do tekstu : 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 i zh-TW.
Wszystkie ustawienia regionalne zamiany tekstu na mowę tutaj (z wyjątkiem fa-IR, Perski (Iran)) są dostępne poza pudełkiem z 1 wybranymi kobietami i/lub 1 wybranymi męskimi głosami. Z zadowoleniem przyjmujemy twoje dane wejściowe, aby pomóc nam ocenić zapotrzebowanie na więcej języków i głosów.
Konfiguracja osadzonej mowy
W przypadku aplikacji połączonych z chmurą, jak pokazano w większości przykładów zestawu SPEECH SDK, należy użyć SpeechConfig
obiektu z kluczem zasobu usługi Mowa i regionem. W przypadku osadzonej mowy nie używasz zasobu usługi Mowa. Zamiast zasobu w chmurze używasz modeli i głosów pobieranych na urządzenie lokalne.
Użyj obiektu , EmbeddedSpeechConfig
aby ustawić lokalizację modeli lub głosów. Jeśli aplikacja jest używana zarówno do zamiany mowy na tekst, jak i do zamiany tekstu na mowę, możesz użyć tego samego EmbeddedSpeechConfig
obiektu, aby ustawić lokalizację modeli i głosów.
// 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);
Napiwek
Funkcja jest definiowana GetEnvironmentVariable
w przewodniku Szybki start zamiany mowy na tekst i zamianie tekstu na mowę— szybki start.
// 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);
Przykłady kodu mowy osadzonej
Możesz znaleźć gotowe do użycia osadzonych przykładów mowy w usłudze GitHub. Aby uzyskać uwagi dotyczące projektów od podstaw, zobacz dokumentację specyficzną dla przykładów:
Możesz znaleźć gotowe do użycia osadzonych przykładów mowy w usłudze GitHub. Aby uzyskać uwagi dotyczące projektów od podstaw, zobacz dokumentację specyficzną dla przykładów:
Możesz znaleźć gotowe do użycia osadzonych przykładów mowy w usłudze GitHub. Aby uzyskać uwagi dotyczące projektów od podstaw, zobacz dokumentację specyficzną dla przykładów:
Mowa hybrydowa
Hybrydowa mowa z HybridSpeechConfig
obiektem domyślnie używa usługi mowy w chmurze i osadzonej mowy jako rezerwowego w przypadku, gdy łączność w chmurze jest ograniczona lub powolna.
W przypadku hybrydowej konfiguracji mowy dla zamiany mowy na tekst (modele rozpoznawania) osadzona mowa jest używana, gdy połączenie z usługą w chmurze kończy się niepowodzeniem po wielokrotnych próbach. Rozpoznawanie może nadal korzystać z usługi w chmurze ponownie, jeśli połączenie zostanie wznowione później.
W przypadku hybrydowej konfiguracji mowy dla zamiany tekstu na mowę (głosy) osadzona i synteza chmury są uruchamiane równolegle, a końcowy wynik jest wybierany na podstawie szybkości odpowiedzi. Najlepszy wynik zostanie ponownie oceniony na każde nowe żądanie syntezy.
Mowa w chmurze
W przypadku mowy w chmurze używasz obiektu, jak pokazano w przewodniku SpeechConfig
Szybki start zamiany mowy na tekst i zamianie tekstu na mowę. Aby uruchomić przewodniki Szybki start dotyczące osadzonej mowy, możesz zastąpić ciąg SpeechConfig
ciągiem EmbeddedSpeechConfig
lub HybridSpeechConfig
. Większość innego rozpoznawania i syntezy kodu mowy jest taka sama, niezależnie od tego, czy jest używana konfiguracja chmurowa, osadzona, czy hybrydowa.
Funkcje osadzonych głosów
W przypadku osadzonych głosów należy pamiętać, że niektóre tagi SSML mogą nie być obecnie obsługiwane z powodu różnic w strukturze modelu. Aby uzyskać szczegółowe informacje dotyczące nieobsługiwanych tagów SSML, zapoznaj się z poniższą tabelą.
Poziom 1 | Poziom 2 | Wartości podrzędne | Obsługa osadzonej usługi NTTS |
---|---|---|---|
dźwięk | src | Nie. | |
bookmark | Tak | ||
break | siła | Tak | |
time | Tak | ||
cisza | type | Wiodące, ogonowe, dokładne przecinki itp. | Nie. |
wartość | Nie. | ||
nacisk | poziom | Nie. | |
Lang | Nie. | ||
leksykon | uri | Tak | |
matematyka | Nie. | ||
msttsaudioduration | wartość | Nie. | |
msttsbackgroundaudio | src | Nie. | |
wolumin | Nie. | ||
fadein | Nie. | ||
Fadeout | Nie. | ||
msttsexpress-as | — styl | Nie. | |
styledegree | Nie. | ||
role | Nie. | ||
msttssilence | Nie. | ||
msttsviseme | type | redlips_front, FaceExpression | Nie. |
p | Tak | ||
fonem | alfabet | ipa, sapi, ups itp. | Tak |
ph | Tak | ||
prozodia | kontur | Obsługa na poziomie zdań, poziom wyrazów tylko en-US i zh-CN | Tak |
rzucać | Tak | ||
range | Tak | ||
tempo | Tak | ||
wolumin | Tak | ||
s | Tak | ||
say-as | interpret-as | znaki, pisownia, number_digit, data itp. | Tak |
format | Tak | ||
szczegóły | Tak | ||
sub | alias | Tak | |
mówić | Tak | ||
voice | Nie. |