クイック スタート: テキストを音声に変換する
リファレンス ドキュメントパッケージ (NuGet)GitHub のその他のサンプル
このクイックスタートでは、テキスト読み上げ合成を行うアプリケーションを実行します。
ヒント
コードを記述せずに Speech サービスを試すには、Speech Studio でプロジェクトを作成します。
前提条件
- Azure サブスクリプション - 無料アカウントを作成します
- Azure portal で音声リソースを作成します。 Free 価格レベル (
`F0` ) を使用してサービスを試用し、後から運用環境用の有料レベルにアップグレードすることができます。 - リソース キーとリージョンを取得します。 音声リソースがデプロイされたら、[リソースに移動] を選択して、キーを表示および管理します。 Cognitive Services リソースの詳細については、「リソースのキーを取得する」を参照してください。
環境をセットアップする
Speech SDK は NuGet パッケージとして提供されていて、.NET Standard 2.0 が実装されています。 Speech SDK は、この記事の次のセクションでインストールしますが、まず、これ以上要件がないか SDK のインストール ガイドを確認してください。
スピーカー出力に合成する
以下の手順に従って新しいコンソール アプリケーションを作成し、Speech SDK をインストールします。
新しいプロジェクトを作成するコマンド プロンプトを開き、.NET CLI を使用してコンソール アプリケーションを作成します。
dotnet new console
.NET CLI を使用して、新しいプロジェクトに Speech SDK をインストールします。
dotnet add package Microsoft.CognitiveServices.Speech
Program.cs
の内容を以下のコードに置き換えます。using System; using System.IO; using System.Threading.Tasks; using Microsoft.CognitiveServices.Speech; using Microsoft.CognitiveServices.Speech.Audio; class Program { static string YourSubscriptionKey = "YourSubscriptionKey"; static string YourServiceRegion = "YourServiceRegion"; static void OutputSpeechSynthesisResult(SpeechSynthesisResult speechSynthesisResult, string text) { switch (speechSynthesisResult.Reason) { case ResultReason.SynthesizingAudioCompleted: Console.WriteLine($"Speech synthesized for text: [{text}]"); break; case ResultReason.Canceled: var cancellation = SpeechSynthesisCancellationDetails.FromResult(speechSynthesisResult); Console.WriteLine($"CANCELED: Reason={cancellation.Reason}"); if (cancellation.Reason == CancellationReason.Error) { Console.WriteLine($"CANCELED: ErrorCode={cancellation.ErrorCode}"); Console.WriteLine($"CANCELED: ErrorDetails=[{cancellation.ErrorDetails}]"); Console.WriteLine($"CANCELED: Did you set the speech resource key and region values?"); } break; default: break; } } async static Task Main(string[] args) { var speechConfig = SpeechConfig.FromSubscription(YourSubscriptionKey, YourServiceRegion); // The language of the voice that speaks. speechConfig.SpeechSynthesisVoiceName = "en-US-JennyNeural"; using (var speechSynthesizer = new SpeechSynthesizer(speechConfig)) { // Get text from the console and synthesize to the default speaker. Console.WriteLine("Enter some text that you want to speak >"); string text = Console.ReadLine(); var speechSynthesisResult = await speechSynthesizer.SpeakTextAsync(text); OutputSpeechSynthesisResult(speechSynthesisResult, text); } Console.WriteLine("Press any key to exit..."); Console.ReadKey(); } }
Program.cs
内で、YourSubscriptionKey
を実際の音声リソース キーに置き換えて、YourServiceRegion
を実際の音声リソース リージョンに置き換えます。音声合成言語を変更するには、
en-US-JennyNeural
を別のサポートされている音声に置き換えます。 すべてのニューラル音声は多言語で、独自の言語と英語で流暢に読み上げます。 たとえば、英語の入力テキストが "I'm excited to try text to speech" で、es-ES-ElviraNeural
を設定した場合、テキストはスペイン語アクセントの英語で読み上げられます。 入力テキストの言語が音声で読み上げられない場合、Speech サービスでは合成された音声が出力されません。
新しいコンソール アプリケーションをビルドして実行し、既定のスピーカーへの音声合成を開始します。
dotnet run
読み上げたいテキストを入力します。 たとえば、「I'm excited to try text to speech」と入力します。Enter キーを押すと、合成された音声が聞こえます。
Enter some text that you want to speak >
I'm excited to try text to speech
解説
クイックスタートを完了したので、次にいくつか追加の考慮事項を示します。
このクイック スタートでは、SpeakTextAsync
操作を使用して、入力した短いテキスト ブロックを合成します。 次のガイドで説明するように、ファイルからテキストを取得することもできます。
- ファイルからの音声合成については、「音声を合成する」および「音声合成マークアップ言語 (SSML) を使用して合成を改善する」をご覧ください。
- バッチ合成については、「長い形式のテキスト読み上げを合成する」をご覧ください。
リソースをクリーンアップする
Azure portal または Azure コマンドライン インターフェイス (CLI) を使用して、作成した音声リソースを削除できます。
リファレンス ドキュメントパッケージ (NuGet)GitHub のその他のサンプル
このクイックスタートでは、テキスト読み上げ合成を行うアプリケーションを実行します。
ヒント
コードを記述せずに Speech サービスを試すには、Speech Studio でプロジェクトを作成します。
前提条件
- Azure サブスクリプション - 無料アカウントを作成します
- Azure portal で音声リソースを作成します。 Free 価格レベル (
`F0` ) を使用してサービスを試用し、後から運用環境用の有料レベルにアップグレードすることができます。 - リソース キーとリージョンを取得します。 音声リソースがデプロイされたら、[リソースに移動] を選択して、キーを表示および管理します。 Cognitive Services リソースの詳細については、「リソースのキーを取得する」を参照してください。
環境をセットアップする
Speech SDK は NuGet パッケージとして提供されていて、.NET Standard 2.0 が実装されています。 Speech SDK は、この記事の次のセクションでインストールしますが、まず、これ以上要件がないか SDK のインストール ガイドを確認してください
スピーカー出力に合成する
以下の手順に従って新しいコンソール アプリケーションを作成し、Speech SDK をインストールします。
Visual Studio で、新しい C# コンソール プロジェクトを作成します。
NuGet パッケージ マネージャーを使用して、新しいプロジェクトに Speech SDK をインストールします。
Install-Package Microsoft.CognitiveServices.Speech
main.cpp
の内容を次のコードに置き換えます。#include <iostream> // cin, cout #include <speechapi_cxx.h> using namespace std; using namespace Microsoft::CognitiveServices::Speech; using namespace Microsoft::CognitiveServices::Speech::Audio; auto YourSubscriptionKey = "YourSubscriptionKey"; auto YourServiceRegion = "YourServiceRegion"; int main() { auto speechConfig = SpeechConfig::FromSubscription(YourSubscriptionKey, YourServiceRegion); // The language of the voice that speaks. speechConfig->SetSpeechSynthesisVoiceName("en-US-JennyNeural"); auto synthesizer = SpeechSynthesizer::FromConfig(speechConfig); // Get text from the console and synthesize to the default speaker. cout << "Enter some text that you want to speak >" << std::endl; std::string text; getline(cin, text); auto result = synthesizer->SpeakTextAsync(text).get(); // Checks result. if (result->Reason == ResultReason::SynthesizingAudioCompleted) { cout << "Speech synthesized to speaker for text [" << text << "]" << std::endl; } else if (result->Reason == ResultReason::Canceled) { auto cancellation = SpeechSynthesisCancellationDetails::FromResult(result); cout << "CANCELED: Reason=" << (int)cancellation->Reason << std::endl; if (cancellation->Reason == CancellationReason::Error) { cout << "CANCELED: ErrorCode=" << (int)cancellation->ErrorCode << std::endl; cout << "CANCELED: ErrorDetails=[" << cancellation->ErrorDetails << "]" << std::endl; cout << "CANCELED: Did you set the speech resource key and region values?" << std::endl; } } cout << "Press enter to exit..." << std::endl; cin.get(); }
main.cpp
内で、YourSubscriptionKey
を実際の音声リソース キーに置き換えて、YourServiceRegion
を実際の音声リソース リージョンに置き換えます。音声合成言語を変更するには、
en-US-JennyNeural
を別のサポートされている音声に置き換えます。 すべてのニューラル音声は多言語で、独自の言語と英語で流暢に読み上げます。 たとえば、英語の入力テキストが "I'm excited to try text to speech" で、es-ES-ElviraNeural
を設定した場合、テキストはスペイン語アクセントの英語で読み上げられます。 入力テキストの言語が音声で読み上げられない場合、Speech サービスでは合成された音声が出力されません。
新しいコンソール アプリケーションをビルドして実行し、既定のスピーカーへの音声合成を開始します。
dotnet run
読み上げたいテキストを入力します。 たとえば、「I'm excited to try text to speech」と入力します。Enter キーを押すと、合成された音声が聞こえます。
Enter some text that you want to speak >
I'm excited to try text to speech
解説
クイックスタートを完了したので、次にいくつか追加の考慮事項を示します。
このクイック スタートでは、SpeakTextAsync
操作を使用して、入力した短いテキスト ブロックを合成します。 次のガイドで説明するように、ファイルからテキストを取得することもできます。
- ファイルからの音声合成については、「音声を合成する」および「音声合成マークアップ言語 (SSML) を使用して合成を改善する」をご覧ください。
- バッチ合成については、「長い形式のテキスト読み上げを合成する」をご覧ください。
リソースをクリーンアップする
Azure portal または Azure コマンドライン インターフェイス (CLI) を使用して、作成した音声リソースを削除できます。
リファレンス ドキュメントパッケージ (Go)GitHub のその他のサンプル
このクイックスタートでは、テキスト読み上げ合成を行うアプリケーションを実行します。
ヒント
コードを記述せずに Speech サービスを試すには、Speech Studio でプロジェクトを作成します。
前提条件
- Azure サブスクリプション - 無料アカウントを作成します
- Azure portal で音声リソースを作成します。 Free 価格レベル (
`F0` ) を使用してサービスを試用し、後から運用環境用の有料レベルにアップグレードすることができます。 - リソース キーとリージョンを取得します。 音声リソースがデプロイされたら、[リソースに移動] を選択して、キーを表示および管理します。 Cognitive Services リソースの詳細については、「リソースのキーを取得する」を参照してください。
環境をセットアップする
Speech SDK for Go をインストールします。 これ以上要件がないか、SDK のインストール ガイドを確認してください
スピーカー出力に合成する
以下の手順に従って、新しい GO モジュールを作成します。
新しいモジュールを作成するコマンド プロンプトを開き、
speech-synthesis.go
という名前の新しいファイルを作成します。speech_synthesis.go
に以下のコードをコピーします。package main import ( "bufio" "fmt" "os" "strings" "time" "github.com/Microsoft/cognitive-services-speech-sdk-go/audio" "github.com/Microsoft/cognitive-services-speech-sdk-go/common" "github.com/Microsoft/cognitive-services-speech-sdk-go/speech" ) func synthesizeStartedHandler(event speech.SpeechSynthesisEventArgs) { defer event.Close() fmt.Println("Synthesis started.") } func synthesizingHandler(event speech.SpeechSynthesisEventArgs) { defer event.Close() fmt.Printf("Synthesizing, audio chunk size %d.\n", len(event.Result.AudioData)) } func synthesizedHandler(event speech.SpeechSynthesisEventArgs) { defer event.Close() fmt.Printf("Synthesized, audio length %d.\n", len(event.Result.AudioData)) } func cancelledHandler(event speech.SpeechSynthesisEventArgs) { defer event.Close() fmt.Println("Received a cancellation.") } func main() { key := "YourSubscriptionKey" region := "YourServiceRegion" audioConfig, err := audio.NewAudioConfigFromDefaultSpeakerOutput() if err != nil { fmt.Println("Got an error: ", err) return } defer audioConfig.Close() speechConfig, err := speech.NewSpeechConfigFromSubscription(key, region) if err != nil { fmt.Println("Got an error: ", err) return } defer speechConfig.Close() speechConfig.SetSpeechSynthesisVoiceName("en-US-JennyNeural") speechSynthesizer, err := speech.NewSpeechSynthesizerFromConfig(speechConfig, audioConfig) if err != nil { fmt.Println("Got an error: ", err) return } defer speechSynthesizer.Close() speechSynthesizer.SynthesisStarted(synthesizeStartedHandler) speechSynthesizer.Synthesizing(synthesizingHandler) speechSynthesizer.SynthesisCompleted(synthesizedHandler) speechSynthesizer.SynthesisCanceled(cancelledHandler) for { fmt.Printf("Enter some text that you want to speak, or enter empty text to exit.\n> ") text, _ := bufio.NewReader(os.Stdin).ReadString('\n') text = strings.TrimSuffix(text, "\n") if len(text) == 0 { break } task := speechSynthesizer.SpeakTextAsync(text) var outcome speech.SpeechSynthesisOutcome select { case outcome = <-task: case <-time.After(60 * time.Second): fmt.Println("Timed out") return } defer outcome.Close() if outcome.Error != nil { fmt.Println("Got an error: ", outcome.Error) return } if outcome.Result.Reason == common.SynthesizingAudioCompleted { fmt.Printf("Speech synthesized to speaker for text [%s].\n", text) } else { cancellation, _ := speech.NewCancellationDetailsFromSpeechSynthesisResult(outcome.Result) fmt.Printf("CANCELED: Reason=%d.\n", cancellation.Reason) if cancellation.Reason == common.Error { fmt.Printf("CANCELED: ErrorCode=%d\nCANCELED: ErrorDetails=[%s]\nCANCELED: Did you set the speech resource key and region values?\n", cancellation.ErrorCode, cancellation.ErrorDetails) } } } }
speech-synthesis.go
内で、YourSubscriptionKey
を実際の音声リソース キーに置き換えて、YourServiceRegion
を実際の音声リソース リージョンに置き換えます。音声合成言語を変更するには、
en-US-JennyNeural
を別のサポートされている音声に置き換えます。 すべてのニューラル音声は多言語で、独自の言語と英語で流暢に読み上げます。 たとえば、英語の入力テキストが "I'm excited to try text to speech" で、es-ES-ElviraNeural
を設定した場合、テキストはスペイン語アクセントの英語で読み上げられます。 入力テキストの言語が音声で読み上げられない場合、Speech サービスでは合成された音声が出力されません。
次のコマンドを実行して、GitHub でホストされているコンポーネントにリンクする go.mod
ファイルを作成します。
go mod init speech-synthesis
go get github.com/Microsoft/cognitive-services-speech-sdk-go
次に、コードをビルドして実行します。
go build
go run speech-synthesis
リソースをクリーンアップする
Azure portal または Azure コマンドライン インターフェイス (CLI) を使用して、作成した音声リソースを削除できます。
リファレンス ドキュメント | GitHub のその他のサンプル
このクイックスタートでは、テキスト読み上げ合成を行うアプリケーションを実行します。
ヒント
コードを記述せずに Speech サービスを試すには、Speech Studio でプロジェクトを作成します。
前提条件
- Azure サブスクリプション - 無料アカウントを作成します
- Azure portal で音声リソースを作成します。 Free 価格レベル (
`F0` ) を使用してサービスを試用し、後から運用環境用の有料レベルにアップグレードすることができます。 - リソース キーとリージョンを取得します。 音声リソースがデプロイされたら、[リソースに移動] を選択して、キーを表示および管理します。 Cognitive Services リソースの詳細については、「リソースのキーを取得する」を参照してください。
環境をセットアップする
何らかの操作を行うには、事前に Speech SDK をインストールしておく必要があります。 このクイックスタートのサンプルは、Java ランタイムで動作します。
スピーカー出力に合成する
以下の手順に従って、音声認識のための新しいコンソール アプリケーションを作成します。
新しいプロジェクトを作成するコマンド プロンプトを開き、
SpeechSynthesis.java
という名前の新しいファイルを作成します。SpeechSynthesis.java
に以下のコードをコピーします。import com.microsoft.cognitiveservices.speech.*; import com.microsoft.cognitiveservices.speech.audio.*; import java.util.Scanner; import java.util.concurrent.ExecutionException; public class SpeechSynthesis { private static String YourSubscriptionKey = "YourSubscriptionKey"; private static String YourServiceRegion = "YourServiceRegion"; public static void main(String[] args) throws InterruptedException, ExecutionException { SpeechConfig speechConfig = SpeechConfig.fromSubscription(YourSubscriptionKey, YourServiceRegion); speechConfig.setSpeechSynthesisVoiceName("en-US-JennyNeural"); SpeechSynthesizer speechSynthesizer = new SpeechSynthesizer(speechConfig); // Get text from the console and synthesize to the default speaker. System.out.println("Enter some text that you want to speak >"); String text = new Scanner(System.in).nextLine(); if (text.isEmpty()) { return; } SpeechSynthesisResult speechRecognitionResult = speechSynthesizer.SpeakTextAsync(text).get(); if (speechRecognitionResult.getReason() == ResultReason.SynthesizingAudioCompleted) { System.out.println("Speech synthesized to speaker for text [" + text + "]"); } else if (speechRecognitionResult.getReason() == ResultReason.Canceled) { SpeechSynthesisCancellationDetails cancellation = SpeechSynthesisCancellationDetails.fromResult(speechRecognitionResult); System.out.println("CANCELED: Reason=" + cancellation.getReason()); if (cancellation.getReason() == CancellationReason.Error) { System.out.println("CANCELED: ErrorCode=" + cancellation.getErrorCode()); System.out.println("CANCELED: ErrorDetails=" + cancellation.getErrorDetails()); System.out.println("CANCELED: Did you set the speech resource key and region values?"); } } System.exit(0); } }
SpeechSynthesis.java
内で、YourSubscriptionKey
を実際の音声リソース キーに置き換えて、YourServiceRegion
を実際の音声リソース リージョンに置き換えます。音声合成言語を変更するには、
en-US-JennyNeural
を別のサポートされている音声に置き換えます。 すべてのニューラル音声は多言語で、独自の言語と英語で流暢に読み上げます。 たとえば、英語の入力テキストが "I'm excited to try text to speech" で、es-ES-ElviraNeural
を設定した場合、テキストはスペイン語アクセントの英語で読み上げられます。 入力テキストの言語が音声で読み上げられない場合、Speech サービスでは合成された音声が出力されません。
新しいコンソール アプリケーションを実行して、既定のスピーカーへの音声合成を開始します。
java SpeechSynthesis
読み上げたいテキストを入力します。 たとえば、「I'm excited to try text to speech」と入力します。Enter キーを押すと、合成された音声が聞こえます。
Enter some text that you want to speak >
I'm excited to try text to speech
解説
クイックスタートを完了したので、次にいくつか追加の考慮事項を示します。
このクイック スタートでは、SpeakTextAsync
操作を使用して、入力した短いテキスト ブロックを合成します。 次のガイドで説明するように、ファイルからテキストを取得することもできます。
- ファイルからの音声合成については、「音声を合成する」および「音声合成マークアップ言語 (SSML) を使用して合成を改善する」をご覧ください。
- バッチ合成については、「長い形式のテキスト読み上げを合成する」をご覧ください。
リソースをクリーンアップする
Azure portal または Azure コマンドライン インターフェイス (CLI) を使用して、作成した音声リソースを削除できます。
リファレンスドキュメントパッケージ (npm)GitHub のその他のサンプルライブラリのソース コード
このクイックスタートでは、テキスト読み上げ合成を行うアプリケーションを実行します。
ヒント
コードを記述せずに Speech サービスを試すには、Speech Studio でプロジェクトを作成します。
前提条件
- Azure サブスクリプション - 無料アカウントを作成します
- Azure portal で音声リソースを作成します。 Free 価格レベル (
`F0` ) を使用してサービスを試用し、後から運用環境用の有料レベルにアップグレードすることができます。 - リソース キーとリージョンを取得します。 音声リソースがデプロイされたら、[リソースに移動] を選択して、キーを表示および管理します。 Cognitive Services リソースの詳細については、「リソースのキーを取得する」を参照してください。
環境をセットアップする
何らかの操作を行うには、事前に Speech SDK for JavaScript をインストールしておく必要があります。 パッケージ名のインストールだけが必要な場合は、npm install microsoft-cognitiveservices-speech-sdk
を実行します。 詳しいインストール手順については、SDK のインストール ガイドを参照してください。
ファイル出力に合成する
以下の手順に従って、音声合成のための Node.js コンソール アプリケーションを作成します。
新しいプロジェクトを作成するコマンド プロンプトを開き、
SpeechSynthesis.js
という名前の新しいファイルを作成します。Speech SDK for JavaScript をインストールします。
npm install microsoft-cognitiveservices-speech-sdk
SpeechSynthesis.js
に以下のコードをコピーします。(function() { "use strict"; var sdk = require("microsoft-cognitiveservices-speech-sdk"); var readline = require("readline"); var key = "YourSubscriptionKey"; var region = "YourServiceRegion"; var audioFile = "YourAudioFile.wav"; const speechConfig = sdk.SpeechConfig.fromSubscription(key, region); const audioConfig = sdk.AudioConfig.fromAudioFileOutput(audioFile); // The language of the voice that speaks. speechConfig.speechSynthesisVoiceName = "en-US-JennyNeural"; // Create the speech synthesizer. var synthesizer = new sdk.SpeechSynthesizer(speechConfig, audioConfig); var rl = readline.createInterface({ input: process.stdin, output: process.stdout }); rl.question("Enter some text that you want to speak >\n> ", function (text) { rl.close(); // Start the synthesizer and wait for a result. synthesizer.speakTextAsync(text, function (result) { if (result.reason === sdk.ResultReason.SynthesizingAudioCompleted) { console.log("synthesis finished."); } else { console.error("Speech synthesis canceled, " + result.errorDetails + "\nDid you set the speech resource key and region values?"); } synthesizer.close(); synthesizer = null; }, function (err) { console.trace("err - " + err); synthesizer.close(); synthesizer = null; }); console.log("Now synthesizing to: " + audioFile); }); }());
SpeechSynthesis.js
内で、YourSubscriptionKey
を実際の音声リソース キーに置き換えて、YourServiceRegion
を実際の音声リソース リージョンに置き換えます。 必要に応じて、YourAudioFile.wav
の名前を別の出力ファイル名に変更できます。音声合成言語を変更するには、
en-US-JennyNeural
を別のサポートされている音声に置き換えます。 すべてのニューラル音声は多言語で、独自の言語と英語で流暢に読み上げます。 たとえば、英語の入力テキストが "I'm excited to try text to speech" で、es-ES-ElviraNeural
を設定した場合、テキストはスペイン語アクセントの英語で読み上げられます。 入力テキストの言語が音声で読み上げられない場合、Speech サービスでは合成された音声が出力されません。
新しいコンソール アプリケーションを実行して、ファイルへの音声合成を開始します。
node.exe SpeechSynthesis.js
指定したテキストが、オーディオ ファイルに出力されるはずです。
Enter some text that you want to speak >
> I'm excited to try text to speech
Now synthesizing to: YourAudioFile.wav
synthesis finished.
解説
クイックスタートを完了したので、次にいくつか追加の考慮事項を示します。
このクイック スタートでは、SpeakTextAsync
操作を使用して、入力した短いテキスト ブロックを合成します。 次のガイドで説明するように、ファイルからテキストを取得することもできます。
- ファイルからの音声合成については、「音声を合成する」および「音声合成マークアップ言語 (SSML) を使用して合成を改善する」をご覧ください。
- バッチ合成については、「長い形式のテキスト読み上げを合成する」をご覧ください。
リソースをクリーンアップする
Azure portal または Azure コマンドライン インターフェイス (CLI) を使用して、作成した音声リソースを削除できます。
リファレンス ドキュメントパッケージ (ダウンロード)GitHub のその他のサンプル
このクイックスタートでは、テキスト読み上げ合成を行うアプリケーションを実行します。
ヒント
コードを記述せずに Speech サービスを試すには、Speech Studio でプロジェクトを作成します。
前提条件
- Azure サブスクリプション - 無料アカウントを作成します
- Azure portal で音声リソースを作成します。 Free 価格レベル (
`F0` ) を使用してサービスを試用し、後から運用環境用の有料レベルにアップグレードすることができます。 - リソース キーとリージョンを取得します。 音声リソースがデプロイされたら、[リソースに移動] を選択して、キーを表示および管理します。 Cognitive Services リソースの詳細については、「リソースのキーを取得する」を参照してください。
環境をセットアップする
Speech SDK for Objective-C は、フレームワーク バンドルとして配布されています。 このフレームワークでは、iOS と macOS の両方について、Objective-C と Swift の両方がサポートされています。
Speech SDK は、Xcode プロジェクトで CocoaPod として使用することも、ここから直接ダウンロードして手動でリンクすることもできます。 このガイドでは CocoaPod を使用します。 CocoaPod 依存関係マネージャーをそのインストールの手順に従ってインストールします。
スピーカー出力に合成する
以下の手順に従って、macOS アプリケーションで音声を合成します。
Azure-Samples/cognitive-services-speech-sdk リポジトリをクローンして、Synthesize audio in Objective-C on macOS using the Speech SDK (macOS で Speech SDK を使用して Objective-C でオーディオを合成する) サンプル プロジェクトを取得します。 このリポジトリには、iOS サンプルもあります。
ターミナルで、ダウンロードしたサンプル アプリ (
helloworld
) のディレクトリに移動します。コマンド
pod install
を実行します。 これにより、サンプル アプリと依存関係としての Speech SDK の両方を含んだ、helloworld.xcworkspace
という Xcode ワークスペースが生成されます。Xcode で
helloworld.xcworkspace
ワークスペースを開きます。次に示すように、
AppDelegate.m
という名前のファイルを開き、buttonPressed
メソッドを見つけます。- (void)buttonPressed:(NSButton *)button { // Creates an instance of a speech config with specified subscription key and service region. // Replace with your own subscription key and service region (e.g., "westus"). NSString *speechKey = @"YourSubscriptionKey"; NSString *serviceRegion = @"YourServiceRegion"; SPXSpeechConfiguration *speechConfig = [[SPXSpeechConfiguration alloc] initWithSubscription:speechKey region:serviceRegion]; speechConfig.speechSynthesisVoiceName = @"en-US-JennyNeural"; SPXSpeechSynthesizer *speechSynthesizer = [[SPXSpeechSynthesizer alloc] init:speechConfig]; NSLog(@"Start synthesizing..."); SPXSpeechSynthesisResult *speechResult = [speechSynthesizer speakText:[self.textField stringValue]]; // Checks result. if (SPXResultReason_Canceled == speechResult.reason) { SPXSpeechSynthesisCancellationDetails *details = [[SPXSpeechSynthesisCancellationDetails alloc] initFromCanceledSynthesisResult:speechResult]; NSLog(@"Speech synthesis was canceled: %@. Did you set the speech resource key and region values?", details.errorDetails); } else if (SPXResultReason_SynthesizingAudioCompleted == speechResult.reason) { NSLog(@"Speech synthesis was completed"); } else { NSLog(@"There was an error."); } }
AppDelegate.m
内で、YourSubscriptionKey
を実際の音声リソース キーに置き換えて、YourServiceRegion
を実際の音声リソース リージョンに置き換えます。AppDelegate.m
で必要に応じて、次のように音声合成の音声名を含めます。speechConfig.speechSynthesisVoiceName = @"en-US-JennyNeural";
音声合成言語を変更するには、
en-US-JennyNeural
を別のサポートされている音声に置き換えます。 すべてのニューラル音声は多言語で、独自の言語と英語で流暢に読み上げます。 たとえば、英語の入力テキストが "I'm excited to try text to speech" で、es-ES-ElviraNeural
を設定した場合、テキストはスペイン語アクセントの英語で読み上げられます。 入力テキストの言語が音声で読み上げられない場合、Speech サービスでは合成された音声が出力されません。デバッグ出力が表示されるようにします ([View][Debug Area][Activate Console])。
メニューから [製品]-[実行] の順に選択するか、[再生] ボタンを選択して、コード例のビルドや実行を行います。
テキストを入力してアプリのボタンを選ぶと、再生された合成音声が聞こえるはずです。
解説
クイックスタートを完了したので、次にいくつか追加の考慮事項を示します。
このクイック スタートでは、SpeakText
操作を使用して、入力した短いテキスト ブロックを合成します。 次のガイドで説明するように、ファイルからテキストを取得することもできます。
- ファイルからの音声合成については、「音声を合成する」および「音声合成マークアップ言語 (SSML) を使用して合成を改善する」をご覧ください。
- バッチ合成については、「長い形式のテキスト読み上げを合成する」をご覧ください。
リソースをクリーンアップする
Azure portal または Azure コマンドライン インターフェイス (CLI) を使用して、作成した音声リソースを削除できます。
リファレンス ドキュメントパッケージ (ダウンロード)GitHub のその他のサンプル
このクイックスタートでは、テキスト読み上げ合成を行うアプリケーションを実行します。
ヒント
コードを記述せずに Speech サービスを試すには、Speech Studio でプロジェクトを作成します。
前提条件
- Azure サブスクリプション - 無料アカウントを作成します
- Azure portal で音声リソースを作成します。 Free 価格レベル (
`F0` ) を使用してサービスを試用し、後から運用環境用の有料レベルにアップグレードすることができます。 - リソース キーとリージョンを取得します。 音声リソースがデプロイされたら、[リソースに移動] を選択して、キーを表示および管理します。 Cognitive Services リソースの詳細については、「リソースのキーを取得する」を参照してください。
環境をセットアップする
Speech SDK for Swift は、フレームワーク バンドルとして配布されています。 このフレームワークでは、iOS と macOS の両方について、Objective-C と Swift の両方がサポートされています。
Speech SDK は、Xcode プロジェクトで CocoaPod として使用することも、ここから直接ダウンロードして手動でリンクすることもできます。 このガイドでは CocoaPod を使用します。 CocoaPod 依存関係マネージャーをそのインストールの手順に従ってインストールします。
スピーカー出力に合成する
以下の手順に従って、macOS アプリケーションで音声を合成します。
Azure-Samples/cognitive-services-speech-sdk リポジトリをクローンして、Synthesize audio in Swift on macOS using the Speech SDK (macOS で Speech SDK を使用して Swift でオーディオを合成する) サンプル プロジェクトを取得します。 このリポジトリには、iOS サンプルもあります。
ターミナルで、ダウンロードしたサンプル アプリ (
helloworld
) のディレクトリに移動します。コマンド
pod install
を実行します。 これにより、サンプル アプリと依存関係としての Speech SDK の両方を含んだ、helloworld.xcworkspace
という Xcode ワークスペースが生成されます。Xcode で
helloworld.xcworkspace
ワークスペースを開きます。次に示すように、
AppDelegate.swift
という名前のファイルを開き、applicationDidFinishLaunching
メソッドとsynthesize
メソッドを見つけます。import Cocoa @NSApplicationMain class AppDelegate: NSObject, NSApplicationDelegate, NSTextFieldDelegate { var textField: NSTextField! var synthesisButton: NSButton! var inputText: String! var sub: String! var region: String! @IBOutlet weak var window: NSWindow! func applicationDidFinishLaunching(_ aNotification: Notification) { print("loading") // load subscription information sub = "YourSubscriptionKey" region = "YourServiceRegion" inputText = "" textField = NSTextField(frame: NSRect(x: 100, y: 200, width: 200, height: 50)) textField.textColor = NSColor.black textField.lineBreakMode = .byWordWrapping textField.placeholderString = "Type something to synthesize." textField.delegate = self self.window.contentView?.addSubview(textField) synthesisButton = NSButton(frame: NSRect(x: 100, y: 100, width: 200, height: 30)) synthesisButton.title = "Synthesize" synthesisButton.target = self synthesisButton.action = #selector(synthesisButtonClicked) self.window.contentView?.addSubview(synthesisButton) } @objc func synthesisButtonClicked() { DispatchQueue.global(qos: .userInitiated).async { self.synthesize() } } func synthesize() { var speechConfig: SPXSpeechConfiguration? do { try speechConfig = SPXSpeechConfiguration(subscription: sub, region: region) } catch { print("error \(error) happened") speechConfig = nil } speechConfig?.speechSynthesisVoiceName = "en-US-JennyNeural"; let synthesizer = try! SPXSpeechSynthesizer(speechConfig!) let result = try! synthesizer.speakText(inputText) if result.reason == SPXResultReason.canceled { let cancellationDetails = try! SPXSpeechSynthesisCancellationDetails(fromCanceledSynthesisResult: result) print("cancelled, error code: \(cancellationDetails.errorCode) detail: \(cancellationDetails.errorDetails!) ") print("Did you set the speech resource key and region values?"); return } } func controlTextDidChange(_ obj: Notification) { let textFiled = obj.object as! NSTextField inputText = textFiled.stringValue } }
AppDelegate.m
内で、YourSubscriptionKey
を実際の音声リソース キーに置き換えて、YourServiceRegion
を実際の音声リソース リージョンに置き換えます。AppDelegate.m
で必要に応じて、次のように音声合成の音声名を含めます。speechConfig?.speechSynthesisVoiceName = "en-US-JennyNeural";
音声合成言語を変更するには、
en-US-JennyNeural
を別のサポートされている音声に置き換えます。 すべてのニューラル音声は多言語で、独自の言語と英語で流暢に読み上げます。 たとえば、英語の入力テキストが "I'm excited to try text to speech" で、es-ES-ElviraNeural
を設定した場合、テキストはスペイン語アクセントの英語で読み上げられます。 入力テキストの言語が音声で読み上げられない場合、Speech サービスでは合成された音声が出力されません。[View](表示)[Debug Area](デバッグ エリア)[Activate Console](コンソールのアクティブ化) の順に選択して、デバッグ出力が表示されるようにします。
メニューから [製品]-[実行] の順に選択するか、[再生] ボタンを選択して、コード例のビルドや実行を行います。
テキストを入力してアプリのボタンを選ぶと、再生された合成音声が聞こえるはずです。
解説
クイックスタートを完了したので、次にいくつか追加の考慮事項を示します。
このクイック スタートでは、SpeakText
操作を使用して、入力した短いテキスト ブロックを合成します。 次のガイドで説明するように、ファイルからテキストを取得することもできます。
- ファイルからの音声合成については、「音声を合成する」および「音声合成マークアップ言語 (SSML) を使用して合成を改善する」をご覧ください。
- バッチ合成については、「長い形式のテキスト読み上げを合成する」をご覧ください。
リソースをクリーンアップする
Azure portal または Azure コマンドライン インターフェイス (CLI) を使用して、作成した音声リソースを削除できます。
リファレンス ドキュメントパッケージ (PyPi)GitHub のその他のサンプル
このクイックスタートでは、テキスト読み上げ合成を行うアプリケーションを実行します。
ヒント
コードを記述せずに Speech サービスを試すには、Speech Studio でプロジェクトを作成します。
前提条件
- Azure サブスクリプション - 無料アカウントを作成します
- Azure portal で音声リソースを作成します。 Free 価格レベル (
`F0` ) を使用してサービスを試用し、後から運用環境用の有料レベルにアップグレードすることができます。 - リソース キーとリージョンを取得します。 音声リソースがデプロイされたら、[リソースに移動] を選択して、キーを表示および管理します。 Cognitive Services リソースの詳細については、「リソースのキーを取得する」を参照してください。
環境をセットアップする
Speech SDK Python は、Python パッケージ インデックス (PyPI) モジュールとして入手できます。 Speech SDK for Python は、Windows、Linux、macOS との互換性があります。
- お使いのプラットフォームに対応した Microsoft Visual Studio 2015、2017、2019、2022 のいずれかの Visual C++ 再頒布可能パッケージをインストールする必要があります。 このパッケージを初めてインストールする場合、再起動が必要になる可能性があります。
- Linux では、x64 ターゲット アーキテクチャを使う必要があります。
Python の 3.7 から 3.10 までのバージョンをインストールします。 最初に、これ以上要件がないか、SDK のインストール ガイドを確認してください
スピーカー出力に合成する
次の手順を実行して、新しいコンソール アプリケーションを作成します。
新しいプロジェクトを作成するコマンド プロンプトを開き、
speech-synthesis.py
という名前の新しいファイルを作成します。次のコマンドを実行して、Speech SDK をインストールします。
pip install azure-cognitiveservices-speech
speech_synthesis.py
に以下のコードをコピーします。import azure.cognitiveservices.speech as speechsdk speech_config = speechsdk.SpeechConfig(subscription="YourSubscriptionKey", region="YourServiceRegion") audio_config = speechsdk.audio.AudioOutputConfig(use_default_speaker=True) # The language of the voice that speaks. speech_config.speech_synthesis_voice_name='en-US-JennyNeural' speech_synthesizer = speechsdk.SpeechSynthesizer(speech_config=speech_config, audio_config=audio_config) # Get text from the console and synthesize to the default speaker. print("Enter some text that you want to speak >") text = input() speech_synthesis_result = speech_synthesizer.speak_text_async(text).get() if speech_synthesis_result.reason == speechsdk.ResultReason.SynthesizingAudioCompleted: print("Speech synthesized for text [{}]".format(text)) elif speech_synthesis_result.reason == speechsdk.ResultReason.Canceled: cancellation_details = speech_synthesis_result.cancellation_details print("Speech synthesis canceled: {}".format(cancellation_details.reason)) if cancellation_details.reason == speechsdk.CancellationReason.Error: if cancellation_details.error_details: print("Error details: {}".format(cancellation_details.error_details)) print("Did you set the speech resource key and region values?")
speech_synthesis.py
内で、YourSubscriptionKey
を実際の音声リソース キーに置き換えて、YourServiceRegion
を実際の音声リソース リージョンに置き換えます。音声合成言語を変更するには、
en-US-JennyNeural
を別のサポートされている音声に置き換えます。 すべてのニューラル音声は多言語で、独自の言語と英語で流暢に読み上げます。 たとえば、英語の入力テキストが "I'm excited to try text to speech" で、es-ES-ElviraNeural
を設定した場合、テキストはスペイン語アクセントの英語で読み上げられます。 入力テキストの言語が音声で読み上げられない場合、Speech サービスでは合成された音声が出力されません。
新しいコンソール アプリケーションを実行して、既定のスピーカーへの音声合成を開始します。
python speech_synthesis.py
読み上げたいテキストを入力します。 たとえば、「I'm excited to try text to speech」と入力します。Enter キーを押すと、合成された音声が聞こえます。
Enter some text that you want to speak >
I'm excited to try text to speech
解説
クイックスタートを完了したので、次にいくつか追加の考慮事項を示します。
このクイック スタートでは、speak_text_async
操作を使用して、入力した短いテキスト ブロックを合成します。 次のガイドで説明するように、ファイルからテキストを取得することもできます。
- ファイルからの音声合成については、「音声を合成する」および「音声合成マークアップ言語 (SSML) を使用して合成を改善する」をご覧ください。
- バッチ合成については、「長い形式のテキスト読み上げを合成する」をご覧ください。
リソースをクリーンアップする
Azure portal または Azure コマンドライン インターフェイス (CLI) を使用して、作成した音声リソースを削除できます。
音声テキスト変換 REST API v3.0 リファレンス | 短い音声用音声テキスト変換 REST API リファレンス | GitHub 上のその他のサンプル
このクイックスタートでは、テキスト読み上げ合成を行うアプリケーションを実行します。
ヒント
コードを記述せずに Speech サービスを試すには、Speech Studio でプロジェクトを作成します。
前提条件
- Azure サブスクリプション - 無料アカウントを作成します
- Azure portal で音声リソースを作成します。 Free 価格レベル (
`F0` ) を使用してサービスを試用し、後から運用環境用の有料レベルにアップグレードすることができます。 - リソース キーとリージョンを取得します。 音声リソースがデプロイされたら、[リソースに移動] を選択して、キーを表示および管理します。 Cognitive Services リソースの詳細については、「リソースのキーを取得する」を参照してください。
ファイルに合成する
コマンド プロンプトで、次の cURL コマンドを実行します。 コマンドには以下の値を挿入します。 YourSubscriptionKey
を実際の音声リソース キーに置き換えて、YourServiceRegion
を実際の音声リソース リージョンに置き換えます。 必要に応じて、output.mp3
の名前を別の出力ファイル名に変更できます。
key="YourSubscriptionKey"
region="YourServiceRegion"
curl --location --request POST 'https://$region.tts.speech.microsoft.com/cognitiveservices/v1' \
--header 'Ocp-Apim-Subscription-Key: $key' \
--header 'Content-Type: application/ssml+xml' \
--header 'X-Microsoft-OutputFormat: audio-16khz-128kbitrate-mono-mp3' \
--header 'User-Agent: curl' \
--data-raw '<speak version='\''1.0'\'' xml:lang='\''en-US'\''>
<voice xml:lang='\''en-US'\'' xml:gender='\''Female'\'' name='\''en-US-JennyNeural'\''>
my voice is my passport verify me
</voice>
</speak>' > output.mp3
指定したテキストが、output.mp3 という名前のオーディオ ファイルに出力されるはずです。
音声合成言語を変更するには、en-US-JennyNeural
を別のサポートされている音声に置き換えます。 すべてのニューラル音声は多言語で、独自の言語と英語で流暢に読み上げます。 たとえば、英語の入力テキストが "I'm excited to try text to speech" で、es-ES-ElviraNeural
を設定した場合、テキストはスペイン語アクセントの英語で読み上げられます。 入力テキストの言語が音声で読み上げられない場合、Speech サービスでは合成された音声が出力されません。
詳細については、「Text-to-speech REST API」を参照してください。
リソースをクリーンアップする
Azure portal または Azure コマンドライン インターフェイス (CLI) を使用して、作成した音声リソースを削除できます。
このクイックスタートでは、テキスト読み上げ合成を行うアプリケーションを実行します。
ヒント
コードを記述せずに Speech サービスを試すには、Speech Studio でプロジェクトを作成します。
前提条件
- Azure サブスクリプション - 無料アカウントを作成します
- Azure portal で音声リソースを作成します。 Free 価格レベル (
`F0` ) を使用してサービスを試用し、後から運用環境用の有料レベルにアップグレードすることができます。 - リソース キーとリージョンを取得します。 音声リソースがデプロイされたら、[リソースに移動] を選択して、キーを表示および管理します。 Cognitive Services リソースの詳細については、「リソースのキーを取得する」を参照してください。
環境をセットアップする
次の手順を実行して、対象プラットフォームに対する Speech CLI クイックスタートの追加要件について確認します。
次のコマンドを入力して、.NET CLI から Speech CLI をインストールします。
dotnet tool install --global Microsoft.CognitiveServices.Speech.CLI
音声リソースのキーとリージョンを構成するために、次のコマンドを実行します。
SUBSCRIPTION-KEY
は音声リソースのキーに置き換えて、REGION
は音声リソースのリージョンに置き換えます。spx config @key --set SUBSCRIPTION-KEY spx config @region --set REGION
スピーカー出力に合成する
既定のスピーカー出力に対する音声合成の場合は、次のコマンドを実行します。 合成するテキストと音声を変更できます。
spx synthesize --text "I'm excited to try text to speech" --voice "en-US-JennyNeural"
音声名を設定しない場合、en-US
の既定の音声が読み上げられます。 すべてのニューラル音声は多言語で、独自の言語と英語で流暢に読み上げます。 たとえば、英語の入力テキストが "I'm excited to try text to speech" で、--voice "es-ES-ElviraNeural"
を設定した場合、テキストはスペイン語アクセントの英語で読み上げられます。 入力テキストの言語が音声で読み上げられない場合、Speech サービスでは合成された音声が出力されません。
ファイルの入力や出力など、音声合成の他のオプションに関する情報を見るには、次のコマンドを実行します。
spx help synthesize
リソースをクリーンアップする
Azure portal または Azure コマンドライン インターフェイス (CLI) を使用して、作成した音声リソースを削除できます。