內嵌語音

警告

本文參考 CentOS,這是即將結束生命週期 (EOL) 狀態的 Linux 發行版。 請據以考慮您的使用和規劃。

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

重要

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

平臺需求

內嵌語音隨附於適用於 C#、C++ 和 Java 的語音 SDK(1.24.1 版和更新版本)。 請參閱程式設計語言和目標平臺特定詳細數據的一般 語音 SDK 安裝需求

選擇您的目標環境

在 Arm64 () 或 Arm32 (arm64-v8aarmeabi-v7a) 硬體上需要 Android 7.0 (API 層級 24) 或更高版本。

只有 Arm64 才支援具有神經語音的內嵌 TTS。

限制

內嵌語音僅適用於 C#、C++ 和 Java SDK。 其他語音 SDK、語音 CLI 和 REST API 不支援內嵌語音。

內嵌語音辨識僅支援mono 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.35.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,波斯文(伊朗))都是現裝的,有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("MODEL_KEY"));

// For text to speech
embeddedSpeechConfig.SetSpeechSynthesisVoice(
    "Microsoft Server Speech Text to Speech Voice (en-US, JennyNeural)",
    Environment.GetEnvironmentVariable("VOICE_KEY"));
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("MODEL_KEY"));

// For text to speech
embeddedSpeechConfig->SetSpeechSynthesisVoice(
    "Microsoft Server Speech Text to Speech Voice (en-US, JennyNeural)",
    GetEnvironmentVariable("VOICE_KEY"));
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("MODEL_KEY"));

// For text to speech
embeddedSpeechConfig.setSpeechSynthesisVoice(
    "Microsoft Server Speech Text to Speech Voice (en-US, JennyNeural)",
    System.getenv("VOICE_KEY"));
embeddedSpeechConfig.setSpeechSynthesisOutputFormat(SpeechSynthesisOutputFormat.Riff24Khz16BitMonoPcm);

內嵌語音程式碼範例

您可以在 GitHub 找到可使用內嵌語音範例的準備。 如需從零開始的專案備註,請參閱範例特定文件:

您可以在 GitHub 找到可使用內嵌語音範例的準備。 如需從零開始的專案備註,請參閱範例特定文件:

您可以在 GitHub 找到可使用內嵌語音範例的準備。 如需從零開始的專案備註,請參閱範例特定文件:

混合式語音

搭配 HybridSpeechConfig 物件的混合式語音預設會使用雲端語音服務,而內嵌語音作為後援,以防雲端連線有限或緩慢。

針對語音轉換文字 (辨識模型) 使用混合式語音設定時,在重複嘗試連線到雲端服務皆失敗時,便會使用內嵌語音。 如果稍後繼續連線,辨識可能會再次使用雲端服務。

使用文字到語音轉換的混合式語音組態(語音),內嵌和雲端合成會以平行方式執行,並根據回應速度選取最終結果。 每個新的合成要求都會再次評估最佳結果。

雲端語音

針對雲端語音,您可以使用 SpeechConfig 物件,如語音轉換文字快速入門文字轉換語音快速入門所示。 若要執行內嵌語音的快速入門,您可以使用 或 HybridSpeechConfig取代 SpeechConfigEmbeddedSpeechConfig 。 其他大部分的語音辨識和合成程序代碼都相同,無論是使用雲端、內嵌或混合式組態。

內嵌語音功能

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

層級 1 層級 2 子值 內嵌NTTS中的支援
音訊 src No
書籤 (bookmark) Yes
break 強度 No
time No
沉默 type 前置、尾端、逗號精確等。 No
value No
emphasis level No
No
詞彙 uri Yes
數學 No
msttsaudioduration value No
msttsbackgroundaudio src No
磁碟區 No
fadein 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
速率 Yes
磁碟區 Yes
s Yes
say-as interpret-as 字元、拼字、number_digit、日期等。 Yes
format Yes
detail Yes
sub 別名 Yes
Yes
voice No

下一步