Udostępnij za pośrednictwem


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:

  1. Zainstaluj narzędzie Apache Maven.
  2. Otwórz wiersz polecenia, w którym chcesz utworzyć nowy projekt, i utwórz nowy pom.xml plik.
  3. Skopiuj następującą zawartość XML do pom.xmlpliku :
    <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.42.0</version>
            </dependency>
        </dependencies>
    </project>
    
  4. 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.