Что такое внедренная речь?

Встроенное распознавание речи предназначено для сценариев речи в текст и текста в речь, где подключение к облаку нестабильно или отсутствует. Например, вы можете использовать встроенное голосовое управление в промышленном оборудовании, устройство кондиционирования воздуха с поддержкой голоса или автомобиль, который может выйти из зоны действия сигнала. Вы также можете разрабатывать гибридные облачные и автономные решения. В сценариях, когда устройства должны находиться в безопасной среде, например в банке или правительственных учреждениях, следует сначала рассмотреть отключенные контейнеры.

Важно

Microsoft ограничивает доступ к внедренной речи. Вы можете подать заявку на доступ через Azure Speech в инструментах Foundry embedded speech limited access review. Дополнительные сведения см. в разделе "Ограниченный доступ" для встроенной речи.

Требования к платформе

Внедренная речь включается в пакет SDK службы "Речь" (версия 1.24.1 и более поздние версии) для C#, C++и Java, а также пакет SDK службы "Речь" для Python (версия 1.51.0 и более поздние версии). Для получения подробных сведений см. общие требования к установке SDK службы Речь для конкретного языка программирования и целевой платформы.

Встроенное распознавание речи с использованием SDK речевой службы для Python поддерживается в Windows (x64, Arm64), Linux (x64, Arm64) и macOS (x64, Arm64). Python не поддерживает внедренную речь в Android.

Встроенная функция распознавания речи в Speech SDK для Go (версии 1.51.0 и выше) поддерживается на Linux (x64, Arm64, Arm32). Go не поддерживает внедренную речь в Android.

Ниже приведены общие оценки потребления памяти с внедренной речью. Окончательные числа зависят от конфигурации компонентов.

  • Распознавание речи или перевод: общий размер файлов модели + 200 МБ.
  • Синтез речи: 100–200 МБ в зависимости от локали.

Выбор целевой среды

Требуется Android 8.0 (уровень API 26) или более поздней версии на оборудовании Arm64 (arm64-v8a) или Arm32 (armeabi-v7a).

Ограничения

  • Только пакеты SDK C#, C++, Java, Python и Go поддерживают внедренную речь. Другие SDK для распознавания речи, командная строка Speech и REST API не поддерживают встраиваемую речь.
  • Пакет SDK службы "Речь" для Python и пакета SDK службы "Речь" для Go не поддерживают гибридную речь (HybridSpeechConfig). Используйте пакет SDK для C#, C++или Java для гибридных сценариев.
  • Встроенное распознавание речи поддерживает только моно 16-битные, 8 кГц или 16 кГц аудиоформаты PCM, кодированные как WAV.
  • Внедренные нейронные голоса поддерживают 16 или 24 кГц RIFF/RAW.

Встраиваемые пакеты SDK для обработки речи

Для встроенных приложений C# установите следующие пакеты SDK для C#:

Пакет Описание
Microsoft. CognitiveServices.Speech Для использования Speech SDK требуется
Microsoft. CognitiveServices.Speech.Extension.Embedded.SR Требуется для встроенного распознавания речи
Microsoft. CognitiveServices.Speech.Extension.Embedded.TTS Требуется для встроенного синтеза речи
Microsoft. CognitiveServices.Speech.Extension.ONNX.Runtime Требуется для встроенного распознавания речи и синтеза
Microsoft.CognitiveServices.Speech.Extension.Telemetry Требуется для встроенного распознавания речи и синтеза

Для встраиваемых приложений C++ установите следующие пакеты речевого SDK для C++:

Пакет Описание
Microsoft. CognitiveServices.Speech Для использования Speech SDK требуется
Microsoft. CognitiveServices.Speech.Extension.Embedded.SR Требуется для встроенного распознавания речи
Microsoft. CognitiveServices.Speech.Extension.Embedded.TTS Требуется для встроенного синтеза речи
Microsoft. CognitiveServices.Speech.Extension.ONNX.Runtime Требуется для встроенного распознавания речи и синтеза
Microsoft.CognitiveServices.Speech.Extension.Telemetry Требуется для встроенного распознавания речи и синтеза

Выбор целевой среды

Для Java встроенных приложений добавьте client-sdk-embedded (.jar) в качестве зависимости. Этот пакет поддерживает облачную, внедренную и гибридную речь.

Важно

Не добавляйте клиентский пакет SDK в тот же проект, так как он поддерживает только облачные службы распознавания речи.

Выполните следующие шаги, чтобы установить Speech SDK для Java с использованием Apache Maven:

  1. Установите Apache Maven.
  2. Откройте командную строку, в которой хотите создать проект и создайте файл pom.xml .
  3. Скопируйте следующее XML-содержимое в 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.43.0</version>
            </dependency>
        </dependencies>
    </project>
    
  4. Выполните следующую команду Maven, чтобы установить пакет SDK для работы с речью и зависимости.
    mvn clean dependency:copy-dependencies
    

Для встроенных приложений на Python установите встраиваемый вариант пакета Speech SDK для Python, который включает среду выполнения для локального вывода:

pip install azure-cognitiveservices-speech-embedded

Важно

Внедренный пакет (azure-cognitiveservices-speech-embedded) — это супермножество облачного пакета (azure-cognitiveservices-speech). Он предоставляет то же пространство имён импорта azure.cognitiveservices.speech и поддерживает все облачные сценарии наряду со встроенными. Установите только один из двух пакетов.

Speech SDK для Go — это cgo оболочка, поэтому для встроенных речевых функций требуются нативные библиотеки Speech SDK на этапе сборки и во время выполнения. Скачайте встраиваемый вариант пакета нативного Speech SDK для Linux, который включает расширения среды выполнения на устройстве:

  1. Выберите каталог для файлов Speech SDK и задайте переменную среды SPEECHSDK_ROOT, чтобы она указывала на него:

    export SPEECHSDK_ROOT="$HOME/speechsdk-embedded"
    mkdir -p "$SPEECHSDK_ROOT"
    
  2. Скачайте и распакуйте встроенные двоичные файлы Speech SDK:

    wget -O SpeechSDK-Embedded-Linux.tar.gz https://aka.ms/csspeech/linuxembeddedbinary
    tar --strip 1 -xzf SpeechSDK-Embedded-Linux.tar.gz -C "$SPEECHSDK_ROOT"
    

    Внедренный пакет — это супермножество стандартного (облачного) пакета. В него входят базовая библиотека (Microsoft.CognitiveServices.Speech.core), встроенные расширения среды выполнения для распознавания и синтеза, а также их зависимость от ONNX Runtime. Установите только встроенный пакет, а не оба пакета.

  3. Наведите указатель cgo на собственные заголовки и библиотеки и добавьте папку библиотеки в путь загрузчика. Замените <architecture> на архитектуру процессора вашего ЦП: x64, arm64 или arm32.

    export CGO_CFLAGS="-I$SPEECHSDK_ROOT/include/c_api"
    export CGO_LDFLAGS="-L$SPEECHSDK_ROOT/lib/<architecture> -lMicrosoft.CognitiveServices.Speech.core"
    export LD_LIBRARY_PATH="$SPEECHSDK_ROOT/lib/<architecture>:$LD_LIBRARY_PATH"
    
  4. Добавьте в проект модуль Go для пакета SDK распознавания речи:

    go get github.com/Microsoft/cognitive-services-speech-sdk-go
    

Модели и голоса

Для внедренной речи необходимо скачать модели распознавания речи для преобразования речи в текст и голоса для преобразования текста в речь. Инструкции предоставляются после успешного завершения процесса проверки ограниченного доступа .

Доступны следующие речевые в текст модели: 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 и zh-TW.

Все языковые стандарты для преобразования текста в речь здесь (кроме fa-IR, персидского (Иран)) доступны из коробки с одним выбранным женским и/или одним выбранным мужским голосом. Мы приветствуем ваши входные данные, чтобы помочь нам оценить спрос на больше языков и голосов.

Внедренная конфигурация речи

Для облачных подключаемых приложений, как показано в большинстве примеров SDK для речи, используется объект SpeechConfig с API ключом и конечной точкой. Для внедренной речи не используется ресурс Foundry для распознавания речи. Вместо облачного ресурса вы используете модели и голоса , скачанные на локальное устройство.

EmbeddedSpeechConfig Используйте объект, чтобы задать расположение моделей или голосов. Если приложение используется как для речи, так и для текста, можно использовать один и тот же EmbeddedSpeechConfig объект, чтобы задать расположение моделей и голосов.

// 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);
// 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);
import os
import azure.cognitiveservices.speech as speechsdk

# Provide the location of the models and voices.
paths = [
    "C:\\dev\\embedded-speech\\stt-models",
    "C:\\dev\\embedded-speech\\tts-voices",
]
embedded_speech_config = speechsdk.EmbeddedSpeechConfig.from_paths(paths)

# For speech to text
embedded_speech_config.set_speech_recognition_model(
    "Microsoft Speech Recognizer en-US FP Model V8",
    os.environ.get("EMBEDDED_SPEECH_MODEL_LICENSE"))

# For text to speech
embedded_speech_config.set_speech_synthesis_voice(
    "Microsoft Server Speech Text to Speech Voice (en-US, JennyNeural)",
    os.environ.get("EMBEDDED_SPEECH_MODEL_LICENSE"))
embedded_speech_config.set_speech_synthesis_output_format(
    speechsdk.SpeechSynthesisOutputFormat.Riff24Khz16BitMonoPcm)

Совет

Если существует только одна модель или путь к голосовой связи, можно также использовать speechsdk.EmbeddedSpeechConfig.from_path(path).

import (
    "os"

    "github.com/Microsoft/cognitive-services-speech-sdk-go/speech"
)

// Provide the location of the models and voices.
paths := []string{
    "/dev/embedded-speech/stt-models",
    "/dev/embedded-speech/tts-voices",
}
embeddedSpeechConfig, err := speech.NewEmbeddedSpeechConfigFromPaths(paths)
if err != nil {
    // Handle the error.
}
defer embeddedSpeechConfig.Close()

// For speech to text
embeddedSpeechConfig.SetSpeechRecognitionModel(
    "Microsoft Speech Recognizer en-US FP Model V8",
    os.Getenv("EMBEDDED_SPEECH_MODEL_LICENSE"))

// For text to speech
embeddedSpeechConfig.SetSpeechSynthesisVoice(
    "Microsoft Server Speech Text to Speech Voice (en-US, JennyNeural)",
    os.Getenv("EMBEDDED_SPEECH_MODEL_LICENSE"))

Совет

Если существует только одна модель или путь к голосовой связи, можно также использовать speech.NewEmbeddedSpeechConfigFromPath(path). Встроенная конфигурация инкапсулирует обычный объект SpeechConfig, поэтому передавайте embeddedSpeechConfig.GetSpeechConfig() в существующие фабричные функции создания распознавателя и синтезатора, например NewSpeechRecognizerFromConfig.

Внедренные примеры кода речи

Вы можете найти готовые к использованию внедренных примеров речи на GitHub. Примечания к проектам с нуля см. в конкретных примерах документации:

Вы можете найти готовые к использованию внедренных примеров речи на GitHub. Примечания к проектам с нуля см. в конкретных примерах документации:

Вы можете найти готовые к использованию внедренных примеров речи на GitHub. Примечания к проектам с нуля см. в конкретных примерах документации:

Готовые к использованию примеры встроенной речи можно найти на GitHub. Примечания по проектам, созданным с нуля, см. в документации для конкретных примеров:

Вы можете найти готовые к использованию внедренные образцы речи для распознавания речи, синтеза и перевода на GitHub. Сведения о предварительных требованиях, настройке нативной библиотеки, установке модели и голоса, а также о флагах сборки см. в руководстве по встроенным примерам.

Гибридная речь

Гибридная речь с HybridSpeechConfig объектом использует облачную службу распознавания речи по умолчанию и внедренную речь в качестве резервного варианта, если подключение к облаку ограничено или медленно.

При настройке гибридной речи для преобразования речи в текст (модели распознавания) внедренная речь используется при сбое подключения к облачной службе после повторных попыток. Распознавание может продолжать использовать облачную службу снова, если подключение будет возобновлено позже.

При использовании гибридной конфигурации речи для преобразования текста в речь (голоса), внедренные и облачные синтезы выполняются параллельно, а конечный результат выбирается на основе скорости отклика. Лучший результат оценивается снова по каждому новому запросу синтеза.

Note

Пакет SDK службы "Речь" для Python и пакета SDK службы "Речь" для Go не поддерживают гибридную речь. Используйте пакет SDK для C#, C++или Java для гибридных сценариев.

Обработка речи в облаке

Для облачной SpeechConfig речи используется объект, как показано в кратком руководстве по конвертации речи в текст и кратком руководстве по конвертации текста в речь. Чтобы запустить быстрые старты по встроенной речи, можно заменить SpeechConfig на EmbeddedSpeechConfig или HybridSpeechConfig. Большинство других кодов распознавания речи и синтеза совпадают с использованием облачной, внедренной или гибридной конфигурации.

Встроенные возможности голосов

Для внедренных голосов важно отметить, что некоторые теги языка разметки синтеза речи (SSML) в настоящее время не поддерживаются из-за различий в структуре модели. Подробные сведения о неподдерживаемых тегах SSML см. в следующей таблице.

Уровень 1 Уровень 2 Подчиненные значения Поддержка внедренных NTTS
Аудио src Нет
Закладка Да
Перерыв Сила Да
Время Да
Тишина Тип Ведущий, Концевой, Точно-запятая и т. д. Нет
Значение Нет
Акцент Уровень Нет
Lang Нет
Лексикон Uri Да
Математике Нет
msttsaudioduration Значение Нет
msttsbackgroundaudio src Нет
Объем Нет
fadein Нет
затухание Нет
msttsexpress-as Стиль Да1
styledegree Нет
Роль Нет
msttssilence Нет
msttsviseme Тип redlips_front, Мимика лица Нет
P Да
Фонема Алфавит ipa, sapi, ups и т. д. Да
Ph Да
просодия Контур Поддержка на уровне предложений, на уровне слов только для en-US и zh-CN Да
Шаг Да
Диапазон Да
Ставка Да
Объем Да
s Да
скажи как интерпретировать как символы, описание, number_digit, дата и т. д. Да
Формат Да
Детали Да
Sub Псевдоним Да
Говорить Да
Голос Нет

1 Стиль msttsexpress-as поддерживается только для en-US-JennyNeural голоса.