分享方式:


什麼是內嵌語音?

內嵌語音是專為雲端連線能力會出現中斷或無法使用的裝置內語音轉換文字文字轉換語音案例所設計。 例如,您可以針對工業設備、啟用語音的空調單位,或是可能會行使出連線範圍的汽車使用內嵌語音。 您也可以開發混合式雲端和離線解決方案。 針對您的裝置必須位於安全環境 (例如銀行或政府實體) 中的案例,您應該先考慮中斷連線的容器

重要

Microsoft 會限制對內嵌語音的存取。 您可以透過 Azure AI 語音內嵌語音有限存取權檢閱 (英文) 來申請存取權。 如需詳細資訊,請參閱內嵌語音的有限存取權

平台需求

內嵌語音包括在適用於 C#、C++ 和 Java 的語音 SDK (1.24.1 版和更新版本) 內。 請參閱一般語音 SDK 安裝需求來取得程式設計語言與目標平台特定詳細資料。

選擇您的目標環境

需要 Android 7.0 (API 層級 24) 或更高版本,且使用 Arm64 (arm64-v8a) 或 Arm32 (armeabi-v7a) 硬體。

只有 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:

Package 描述
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:

Package 描述
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:

  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.40.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、hi-IN、it-IT、ja-JP、ko-KR、nl-NL、pt-BR、ru-RU、sv-SE、tr-TR、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);

提示

GetEnvironmentVariable 函式定義於語音轉換文字快速入門文字轉換語音快速入門

// 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 取代為 EmbeddedSpeechConfigHybridSpeechConfig。 其他大部分的語音辨識和合成程式碼都是相同的,無論是使用雲端、內嵌或混合式設定。

內嵌語音功能

針對內嵌語音,請務必注意,由於模型結構的差異,目前可能不支援某些 SSML 標籤。 如需不支援 SSML 標籤的詳細資訊,請參閱下表。

層級 1 層級 2 子值 內嵌 NTTS 中的支援
audio src No
bookmark Yes
break 強度 Yes
time Yes
靜音 type 開頭、結尾、逗號精確等。 No
value No
emphasis level No
lang No
lexicon uri Yes
數學 No
msttsaudioduration value No
msttsbackgroundaudio src No
磁碟區 No
淡入 No
淡出 No
msttsexpress-as style No
styledegree No
角色 (role) No
msttssilence No
msttsviseme type redlips_front, FacialExpression No
p Yes
音素 (phoneme) 字母 ipa、sapi、ups 等 Yes
ph Yes
韻律 輪廓 句子層級支援,僅字詞層級 en-US 和 zh-CN Yes
pitch Yes
range Yes
rate Yes
磁碟區 Yes
s Yes
發音為 interpret-as 字元、拼字、number_digit、日期等。 Yes
format Yes
detail Yes
sub 別名 Yes
語音 Yes
voice No