你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
什么是嵌入式语音?
嵌入式语音设计用于云连接是间歇性有效或不可用的设备端语音转文本和文本转语音方案。 例如,可以在工业设备、启用语音的空调装置或可能驶出范围的汽车中使用嵌入式语音。 还可以开发混合云和脱机解决方案。 对于设备必须位于安全环境(如银行或政府实体)的情况,应首先考虑使用断开连接的容器。
重要
Microsoft 限制对嵌入式语音的访问。 可以通过 Azure AI 语音嵌入式语音受限访问评审来申请访问权限。 有关详细信息,请参阅嵌入式语音的受限访问。
平台要求
嵌入式语音包含在 C#、C++ 和 Java 的语音 SDK(版本 1.24.1 和更高版本)中。 有关编程语言和目标平台特定详细信息,请参阅通用语音 SDK 安装要求。
选择目标环境
在 Arm64 (arm64-v8a
) 或 Arm32 (armeabi-v7a
) 硬件上需要 Android 7.0(API 级别 24)或更高版本。
仅 Arm64 支持具有神经语音的嵌入式 TTS。
限制
嵌入式语音仅适用于 C#、C++ 和 Java SDK。 其他语音 SDK、语音 CLI 和 REST API 不支持嵌入式语音。
嵌入式语音识别仅支持单声道 16 位、8-kHz 或 16-kHz PCM 编码的 WAV 音频格式。
嵌入式神经语音支持 24 kHz RIFF/RAW,RAM 要求为 100 MB。
嵌入式语音 SDK 包
对于 C# 嵌入式应用程序,请安装以下适用于 C# 包的语音 SDK:
程序包 | 说明 |
---|---|
Microsoft.CognitiveServices.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++ 嵌入式应用程序,请安装以下适用于 C++ 包的语音 SDK:
程序包 | 说明 |
---|---|
Microsoft.CognitiveServices.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
) 添加为依赖项。 此包支持云、嵌入式和混合语音。
重要
请勿在同一项目中添加 client-sdk,因为它仅支持云语音服务。
按照以下步骤使用 Apache Maven 安装适用于 Java 的语音 SDK:
- 安装 Apache Maven。
- 在需要新项目的地方打开命令提示符,并创建一个新的
pom.xml
文件。 - 将以下 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.40.0</version> </dependency> </dependencies> </project>
- 若要安装语音 SDK 和依赖项,请运行以下 Maven 命令。
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、波斯语(伊朗)除外)可直接使用,并带有 1 个选定的女性语音和/或 1 个选定的男性语音。 欢迎提供意见,帮助我们了解你对其他语言和语音的需求。
嵌入式语音配置
对于云连接的应用程序,如大多数语音 SDK 示例中所示,可以使用具有语音资源密钥和区域的 SpeechConfig
对象。 对于嵌入式语音,不使用语音资源。 使用下载到本地设备的模型和语音,而非云资源。
使用 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 上找到现成的嵌入式语音示例。 有关从头开始的项目的注解,请参阅示例特定文档:
混合语音
默认情况下,具有 HybridSpeechConfig
对象的混合语音使用云语音服务,在云连接受限或速度缓慢时把嵌入式语音作为备用。
对于具有混合语音配置的语音转文本(识别模型),当反复尝试连接到云服务失败时,将使用嵌入式语音。 如果稍后恢复连接,那么识别模型可能会再次继续使用云服务。
使用文本转语音(声音)的混合语音配置,嵌入式语音和云合成并行运行,并且根据响应速度选择最终结果。 对于每个新的合成请求会再次评估最佳结果。
云语音
对于云语音,请使用 SpeechConfig
对象,如语音转文本快速入门和文本转语音快速入门所示。 若要运行嵌入式语音的快速入门,可以将 SpeechConfig
替换为 EmbeddedSpeechConfig
或 HybridSpeechConfig
。 大多数其他语音识别和合成代码都是相同的(无论是使用云、嵌入式还是混合配置)。
嵌入式语音功能
对于嵌入式语音,必须注意的是,由于模型结构的差异,目前可能不支持某些 SSML 标记。 有关不支持的 SSML 标记的详细信息,请参阅下表。
1 级 | 2 级 | Sub 值 | 在嵌入式 NTTS 中受支持 |
---|---|---|---|
audio | src | 否 | |
bookmark | 是 | ||
break | 力量 | 是 | |
时间 | 是 | ||
silence | type | Leading、Tailing、Comma-exact 等 | 否 |
value | 否 | ||
emphasis | level | 否 | |
lang | 否 | ||
lexicon | uri | 是 | |
算术 | 否 | ||
msttsaudioduration | value | 否 | |
msttsbackgroundaudio | src | 否 | |
卷 | 否 | ||
fadein | 否 | ||
fadeout | 否 | ||
msttsexpress-as | style | 否 | |
styledegree | 否 | ||
role | 否 | ||
msttssilence | 否 | ||
msttsviseme | type | redlips_front、FacialExpression | 否 |
p | 是 | ||
音素 | alphabet | ipa、sapi、ups 等 | 是 |
ph | 是 | ||
prosody | contour | 句子级别支持,单词级别仅限 en-US 和 zh-CN | 是 |
pitch | 是 | ||
range | 是 | ||
费率 | 是 | ||
卷 | 是 | ||
s | 是 | ||
say-as | interpret-as | characters、spell-out、number_digit、date 等 | 是 |
format | 是 | ||
detail | 是 | ||
sub | 别名 | 是 | |
speak | 是 | ||
voice | 否 |