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

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

Важно

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

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

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

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

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

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

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

Ограничения

  • Внедренная речь доступна только с помощью пакетов SDK для C#, C++и Java. Другие SDK для распознавания речи, командная строка Speech и REST API не поддерживают встраиваемую речь.
  • Встроенное распознавание речи поддерживает только моно 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
    

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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