什麼是嵌入式語音?

嵌入式語音設計用於裝置上的 語音轉文字文字轉語音 的場景,當雲端連線間歇性或無法使用時。 例如,你可以在工業設備、支援語音控制的空調機組或可能行駛至無訊號範圍外的車輛中使用嵌入式語音技術。 你也可以開發混合雲與離線解決方案。 若裝置必須置於銀行或政府等安全環境中,應先考慮 斷開容器

重要

Microsoft 限制了對嵌入式語音的存取。 你可以透過 Foundry 工具中的 Azure 語音 嵌入語音有限存取審查 申請存取。 欲了解更多資訊,請參閱 嵌入語音的有限存取

平台要求

Speech SDK(版本 1.24.1 及以上)包含 C#、C++ 與 Java 的內嵌語音功能。 請參閱一般語音 SDK 程式 語言安裝要求及目標平台特定細節。

以下是嵌入語音時記憶體消耗的一般估計值。 最終數字取決於功能配置。

  • 語音辨識或翻譯:模型檔案總大小 + 200 MB。
  • 語音合成:視地區而定,100-200 MB。

選擇你的目標環境

需在 Arm64(arm64-v8a) 或 Arm32armeabi-v7a() 硬體上安裝 Android 8.0(API 等級 26)或以上。

限制

  • 嵌入式語音僅支援 C#、C++ 及 Java SDK。 其他語音 SDK、語音 CLI 和 REST API 不支援嵌入式語音。
  • 嵌入式語音辨識僅支援單聲道 16 位元、8 kHz 或 16 kHz PCM 編碼的 WAV 音訊格式。
  • 嵌入式神經語音支援 16 kHz 或 24 kHz 的 RIFF/RAW。

嵌入式語音 SDK 套件

對於 C# 嵌入式應用程式,請安裝以下 Speech SDK for C# 套件:

包裝 描述
Microsoft。Cognitive Services.Speech 必須使用 Speech SDK
Microsoft.CognitiveServices.Speech.Extension.Embedded.SR 嵌入式語音辨識所需的必要條件
Microsoft.CognitiveServices.Speech.Extension.Embedded.TTS 嵌入式語音合成的必要條件
Microsoft.CognitiveServices.Speech.Extension.ONNX.Runtime 嵌入式語音辨識與合成所需
Microsoft。認知服務。語音.延伸.遙測 嵌入式語音辨識與合成所需

對於 C++ 嵌入式應用程式,請安裝以下 Speech SDK for C++ 套件:

包裝 描述
Microsoft。Cognitive Services.Speech 必須使用 Speech SDK
Microsoft.CognitiveServices.Speech.Extension.Embedded.SR 嵌入式語音辨識所需的必要條件
Microsoft.CognitiveServices.Speech.Extension.Embedded.TTS 嵌入式語音合成的必要條件
Microsoft.CognitiveServices.Speech.Extension.ONNX.Runtime 嵌入式語音辨識與合成所需
Microsoft。認知服務。語音.延伸.遙測 嵌入式語音辨識與合成所需

選擇你的目標環境

對於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.43.0</version>
            </dependency>
        </dependencies>
    </project>
    
  4. 執行以下 Maven 指令來安裝 Speech 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位男性的語音選擇。 我們歡迎您的意見,幫助我們評估對更多語言與聲音的需求。

嵌入語音配置

對於雲端連接的應用程式,如大多數 Speech SDK 範例所示,你會使用帶有 API 金鑰和端點的 SpeechConfig 物件。 對於嵌入式語音,你不會用 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);

提示

這個 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 標籤詳細資訊,請參閱下表。

第一關 第二層 子值 嵌入式 NTTS 支援
音效 SRC
書籤 是的
中斷 力量 是的
時間 是的
寂靜 型別 前導、尾隨、逗號精確等等。
價值
重點 水平儀
語彙 URI 是的
數學
mstts音頻時長 價值
MSTTS背景音頻 SRC
音量
淡化
漸弱
MSTTS快車-AS 樣式 是的 1
styledegree
角色
msttssilence
MSTTSVISEME 型別 redlips_front,臉部表情
p 是的
音素 字母表 IPA、SAPI、UPS 等等。 是的
pH 是的
韻律 輪廓 句子層級支持,僅限於字詞層級的 en-US 和 zh-CN 是的
音高 是的
範圍 是的
利率 是的
音量 是的
s 是的
賽-阿 解釋為 字元、拼寫、數字、日期等等。 是的
格式 是的
細節 是的
字幕 別名 是的
說話 是的
語音

1msttsexpress-as 此風格僅支援 en-US-JennyNeural 聲音。