埋め込み音声とは
埋め込み音声は、クラウド接続が断続的、または使用できないデバイス上の音声テキスト変換とテキスト読み上げのシナリオ向けに設計されています。 たとえば、産業機器、音声対応空調ユニット、範囲外に移動する可能性のある自動車で、埋め込み音声を使用できます。 また、クラウドとオフラインのハイブリッド ソリューションも開発できます。 銀行や政府機関のようなセキュリティで保護された環境にデバイスを配置する必要があるシナリオでは、まず切断されたコンテナーを検討する必要があります。
重要
Microsoft は、埋め込み音声へのアクセスを制限しています。 Azure AI 音声埋め込み音声の制限付きアクセス レビューからアクセスを申請できます。 詳細については、埋め込み音声の制限付きアクセスに関する記事を参照してください。
プラットフォームの要件
埋め込み音声は、C#、C++、Java 用の Speech SDK (バージョン 1.24.1 以降) に含まれています。 プログラミング言語とターゲット プラットフォーム固有の詳細については、一般的な Speech SDK のインストール要件に関する記事を参照してください。
ターゲット環境を選択してください
Arm64 (arm64-v8a
) または Arm32 (armeabi-v7a
) ハードウェア上の Android 7.0 (API レベル 24) 以降が必要です。
ニューラル音声を使った埋め込み TTS は Arm64 でのみサポートされています。
制限事項
埋め込み音声は、C#、C++、Java の各 SDK でのみ使用できます。 その他の Speech SDK、Speech CLI、REST API は、埋め込み音声をサポートしていません。
埋め込み音声認識では、モノラル 16 ビット、8 kHz または 16 kHz の PCM エンコード WAV オーディオ形式のみがサポートされます。
埋め込みニューラル音声は 24 kHz RIFF/RAW をサポートしており、RAM 要件は 100 MB です。
埋め込み音声 SDK パッケージ
C# 埋め込みアプリケーションの場合は、次の C# 用 Speech SDK パッケージをインストールします:
Package | 説明 |
---|---|
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++ 埋め込みアプリケーションの場合は、次の C++ 用 Speech SDK パッケージをインストールします:
Package | 説明 |
---|---|
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
) を依存関係として追加します。 このパッケージは、クラウド、埋め込み、ハイブリッド音声をサポートします。
重要
client-sdk はクラウド音声サービスのみをサポートするため、同じプロジェクトに追加しないでください。
Apache Maven を使用して Speech SDK for Java をインストールするには、次の手順に従います。
- 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>
- 次の 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 サンプルで示されているように、Speech リソース キーとリージョンと共に SpeechConfig
オブジェクトを使います。 埋め込み音声の場合、Speech リソースは使いません。 クラウド リソースではなく、ローカル デバイスにダウンロードしたモデルと音声を使います。
モデルまたは音声の場所を設定するには、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 には、すぐに使える埋め込み音声のサンプルがあります。 プロジェクトに関する一からの解説については、次に示すサンプル固有のドキュメントを参照してください。
ハイブリッド音声
HybridSpeechConfig
オブジェクトを使うハイブリッド音声の場合、既定ではクラウド音声サービスを使い、クラウド接続が制限されているか遅い場合のフォールバックとして埋め込み音声を使います。
音声テキスト変換 (認識モデル) のハイブリッド音声構成の場合、クラウド サービスへの接続を何度試行しても失敗したときに、埋め込み音声が使われます。 その後に接続が再開されると、再びクラウド サービスを使って認識を継続できます。
テキスト読み上げ (音声) 用のハイブリッド音声構成の場合、埋め込み合成とクラウド合成を並行して行い、応答速度に基づいて最終的な結果が選ばれます。 新しい合成要求ごとに、最適な結果が再度評価されます。
クラウド音声
クラウド音声の場合は、音声テキスト変換のとテキスト読み上げのクイックスタートで示されているように、SpeechConfig
オブジェクトを使います。 埋め込み音声のクイックスタートを実行するには、SpeechConfig
を EmbeddedSpeechConfig
または HybridSpeechConfig
に置き換えることができます。 その他の音声認識と合成コードのほとんどは、クラウド、埋め込み、ハイブリッド構成のいずれを使っても同じです。
埋め込み音声機能
埋め込み音声の場合、モデル構造の違いにより、特定の SSML タグが現在サポートされていない可能性があることに注意する必要があります。 サポートされていない SSML タグの詳細については、以下の表を参照してください。
レベル 1 | レベル 2 | サブ値 | 埋め込み NTTS でのサポート |
---|---|---|---|
audio | src | いいえ | |
ブックマーク (bookmark) | はい | ||
break | strength | はい | |
time | はい | ||
silence | 型 | Leading、Tailing、Comma-exact など | いいえ |
value | いいえ | ||
emphasis | level | いいえ | |
lang | いいえ | ||
lexicon | URI | はい | |
数値演算 | いいえ | ||
msttsaudioduration | value | いいえ | |
msttsbackgroundaudio | src | いいえ | |
volume | いいえ | ||
fadein | いいえ | ||
fadeout | いいえ | ||
msttsexpress-as | style | いいえ | |
styledegree | いいえ | ||
role | いいえ | ||
msttssilence | いいえ | ||
msttsviseme | 型 | redlips_front、FacialExpression | いいえ |
P | はい | ||
phoneme | alphabet | ipa、sapi、ups など | はい |
ph | はい | ||
prosody | contour | 文レベルのサポート、単語レベルのみ en-US および zh-CN | はい |
pitch | はい | ||
範囲 | はい | ||
レート | はい | ||
volume | はい | ||
s | はい | ||
say-as | interpret-as | characters、spell-out、number_digit、date など | はい |
format | はい | ||
詳細 | はい | ||
sub | エイリアス | はい | |
speak | はい | ||
voice | いいえ |