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 poprzez przegląd o ograniczonym dostępie do osadzonej mowy 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 8.0 (poziom 26 interfejsu API) lub nowszego na sprzęcie Arm64 (arm64-v8a) lub Arm32 (armeabi-v7a).

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 PCM, mono, 16-bit, 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 osadzonej syntezy mowy
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 osadzonej syntezy mowy
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.43.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 do zamiany mowy na tekst i głosy do zamiany 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 sugestie, 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 interfejsu API i punktem końcowym. W przypadku osadzonej mowy nie używasz zasobu AI Foundry do rozpoznawania mowy. 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 GetEnvironmentVariable jest zdefiniowana w szybkim rozpoczęciu zamiany mowy na tekst i szybkim rozpoczęciu zamiany tekstu na mowę.

// 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 osadzonych próbek kodu mowy

Możesz znaleźć gotowe do użycia osadzone próbki 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 osadzone próbki 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 osadzone próbki 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 obiektem HybridSpeechConfig domyślnie używa usługi mowy w chmurze, a mowy wbudowanej jako rozwiązania rezerwowego w przypadku, gdy łączność z chmurą 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), synteza wbudowana i chmurowa działają 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 SpeechConfig, jak pokazano w przewodniku Szybki start zamiany mowy na tekst i Szybki start zamiany tekstu na mowę. Aby uruchomić przewodniki szybkiego startu dotyczące osadzonej mowy, możesz zastąpić 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 języka znaczników syntezy mowy (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 Wsparcie wbudowanej usługi NTTS
dźwięk Src Nie.
zakładka Tak
przerwać siła Tak
czas Tak
cisza typ Wiodące, końcowe, dokładne dopasowanie z przecinkiem, itp. Nie.
wartość Nie.
nacisk poziom Nie.
język Nie.
leksykon URI Tak
matematyka Nie.
msttsaudioduration wartość Nie.
msttsbackgroundaudio Src Nie.
wolumin Nie.
zanikanie Nie.
Zanikanie Nie.
msttsexpress-as styl Tak1
styledegree Nie.
rola Nie.
msttssilence Nie.
msttsviseme typ redlips_front, WyrazTwarzy Nie.
p Tak
fonem alfabet ipa, sapi, ups itp. Tak
ph Tak
prozodia kontur Obsługa na poziomie zdań, a na poziomie wyrazów dostępna tylko dla języków en-US i zh-CN Tak
rzucać Tak
zakres Tak
wskaźnik Tak
wolumin Tak
s Tak
określenie formatu wypowiedzi interpretować jako znaki, przeliterowanie, cyfra, data itp. Tak
formatowanie Tak
szczegóły Tak
Subskrypcja alias Tak
mówić Tak
głos Nie.

1 Styl msttsexpress-as jest obsługiwany tylko dla en-US-JennyNeural głosu.