クイック スタート: Azure OpenAI Service を使用したテキスト読み上げ
このクイックスタートでは、OpenAI の音声によるテキスト読み上げに Azure OpenAI Service を使用します。
使用可能な音声は、alloy
、echo
、fable
、onyx
、nova
、shimmer
です。 詳細については、テキスト読み上げに関する Azure OpenAI Service リファレンス ドキュメントを参照してください。
前提条件
- Azure サブスクリプション。無料で作成できます。
tts-1
またはtts-1-hd
モデルがデプロイされた米国中北部またはスウェーデン中部リージョンで作成された Azure OpenAI リソース。 詳細については、「Azure OpenAI を使用してリソースを作成し、モデルをデプロイする」を参照してください。
設定
キーとエンドポイントを取得する
Azure OpenAI に対して正常に呼び出しを行うには、エンドポイントとキーが必要です。
変数名 | Value |
---|---|
AZURE_OPENAI_ENDPOINT |
サービス エンドポイントは、Azure portal でリソースを調べるときに、[キーとエンドポイント] セクションで確認できます。 または、Azure AI Studio の [デプロイ] ページからエンドポイントを見つけることができます。 エンドポイントの例: https://docs-test-001.openai.azure.com/ 。 |
AZURE_OPENAI_API_KEY |
この値は、Azure portal からリソースを確認する際に、 [Keys & Endpoint](キーとエンドポイント) セクションで確認することができます。 KEY1 または KEY2 を使用できます。 |
Azure portal でリソースに移動します。 [エンドポイントとキー] は [リソース管理] セクションにあります。 エンドポイントとアクセス キーをコピーします。これらは、API 呼び出しを認証するために両方とも必要です。 KEY1
または KEY2
を使用できます。 常に 2 つのキーを用意しておくと、サービスを中断させることなく、キーのローテーションと再生成を安全に行うことができます。
環境変数
キーとエンドポイントの永続的な環境変数を作成して割り当てます。
重要
API キーを使用する場合は、それを Azure Key Vault などの別の場所に安全に保存します。 API キーは、コード内に直接含めないようにし、絶対に公開しないでください。
AI サービスのセキュリティの詳細については、「Azure AI サービスに対する要求の認証」を参照してください。
setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"
REST 要求と応答を作成する
Bash シェルで、次のコマンドを実行します。 YourDeploymentName
を、テキスト読み上げモデルをデプロイしたときに選択したデプロイ名に置き換える必要があります。 デプロイ名は必ずしもモデル名と同じではありません。 基になるモデル名と同じデプロイ名を選ばないと、モデル名の入力時にエラーが発生します。
curl $AZURE_OPENAI_ENDPOINT/openai/deployments/YourDeploymentName/audio/speech?api-version=2024-02-15-preview \
-H "api-key: $AZURE_OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "tts-1-hd",
"input": "I'm excited to try text to speech.",
"voice": "alloy"
}' --output speech.mp3
エンドポイントの例を含むコマンドの最初の行の形式は、curl https://aoai-docs.openai.azure.com/openai/deployments/{YourDeploymentName}/audio/speech?api-version=2024-02-15-preview \
のようになります。
重要
運用環境では、Azure Key Vault などの資格情報を格納してアクセスする安全な方法を使用します。 資格情報のセキュリティについて詳しくは、Azure AI サービスのセキュリティに関する記事をご覧ください。
ソース コード | パッケージ (npm) | サンプル
前提条件
- Azure サブスクリプション - 無料アカウントを作成します
- Node.js の LTS バージョン
- Azure CLI をローカル開発環境でのパスワードレス認証に使用する場合は、Azure CLI でサインインして必要なコンテキストを作成します。
- サポートされるリージョンに作成された Azure OpenAI リソース (利用可能なリージョンの情報をご覧ください)。 詳細については、「Azure OpenAI を使用してリソースを作成し、モデルをデプロイする」を参照してください。
設定
キーとエンドポイントを取得する
Azure OpenAI に対して正常に呼び出しを行うには、エンドポイントとキーが必要です。
変数名 | Value |
---|---|
AZURE_OPENAI_ENDPOINT |
サービス エンドポイントは、Azure portal でリソースを調べるときに、[キーとエンドポイント] セクションで確認できます。 または、Azure AI Studio の [デプロイ] ページからエンドポイントを見つけることができます。 エンドポイントの例: https://docs-test-001.openai.azure.com/ 。 |
AZURE_OPENAI_API_KEY |
この値は、Azure portal からリソースを確認する際に、 [Keys & Endpoint](キーとエンドポイント) セクションで確認することができます。 KEY1 または KEY2 を使用できます。 |
Azure portal でリソースに移動します。 [エンドポイントとキー] は [リソース管理] セクションにあります。 エンドポイントとアクセス キーをコピーします。これらは、API 呼び出しを認証するために両方とも必要です。 KEY1
または KEY2
を使用できます。 常に 2 つのキーを用意しておくと、サービスを中断させることなく、キーのローテーションと再生成を安全に行うことができます。
環境変数
キーとエンドポイントの永続的な環境変数を作成して割り当てます。
重要
API キーを使用する場合は、それを Azure Key Vault などの別の場所に安全に保存します。 API キーは、コード内に直接含めないようにし、絶対に公開しないでください。
AI サービスのセキュリティの詳細については、「Azure AI サービスに対する要求の認証」を参照してください。
setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"
Node アプリケーションを作成する
コンソール ウィンドウ (cmd、PowerShell、Bash など) で、ご利用のアプリ用に新しいディレクトリを作成し、そこに移動します。 次に、npm init
コマンドを実行し、package.json ファイルを使用してノード アプリケーションを作成します。
npm init
クライアント ライブラリをインストールする
次のコマンドを使用してクライアント ライブラリをインストールします。
npm install openai @azure/identity
アプリの package.json ファイルは依存関係を含めて更新されます。
音声ファイルを作成する
Text-to-speech.js という名前の新しいファイルを作成し、好みのコード エディターで開きます。 次のコードを Text-to-speech.js ファイルにコピーします。
const { writeFile } = require("fs/promises"); const { AzureOpenAI } = require("openai"); const { DefaultAzureCredential, getBearerTokenProvider } = require("@azure/identity"); require("openai/shims/node"); // You will need to set these environment variables or edit the following values const endpoint = process.env["AZURE_OPENAI_ENDPOINT"] || "<endpoint>"; const speechFilePath = "<path to save the speech file>"; // Required Azure OpenAI deployment name and API version const deploymentName = "tts"; const apiVersion = "2024-08-01-preview"; // keyless authentication const credential = new DefaultAzureCredential(); const scope = "https://cognitiveservices.azure.com/.default"; const azureADTokenProvider = getBearerTokenProvider(credential, scope); function getClient() { return new AzureOpenAI({ endpoint, azureADTokenProvider, apiVersion, deployment: deploymentName, }); } async function generateAudioStream( client, params ) { const response = await client.audio.speech.create(params); if (response.ok) return response.body; throw new Error(`Failed to generate audio stream: ${response.statusText}`); } export async function main() { console.log("== Text to Speech Sample =="); const client = getClient(); const streamToRead = await generateAudioStream(client, { model: deploymentName, voice: "alloy", input: "the quick brown chicken jumped over the lazy dogs", }); console.log(`Streaming response to ${speechFilePath}`); await writeFile(speechFilePath, streamToRead); console.log("Finished streaming"); } main().catch((err) => { console.error("The sample encountered an error:", err); });
次のコマンドを使用してこのスクリプトを実行します。
node Text-to-speech.js
ソース コード | パッケージ (npm) | サンプル
前提条件
- Azure サブスクリプション - 無料アカウントを作成します
- Node.js の LTS バージョン
- TypeScript
- Azure CLI をローカル開発環境でのパスワードレス認証に使用する場合は、Azure CLI でサインインして必要なコンテキストを作成します。
- サポートされるリージョンに作成された Azure OpenAI リソース (利用可能なリージョンの情報をご覧ください)。 詳細については、「Azure OpenAI を使用してリソースを作成し、モデルをデプロイする」を参照してください。
設定
キーとエンドポイントを取得する
Azure OpenAI に対して正常に呼び出しを行うには、エンドポイントとキーが必要です。
変数名 | 値 |
---|---|
AZURE_OPENAI_ENDPOINT |
この値は、Azure portal からリソースを確認する際に、 [Keys & Endpoint](キーとエンドポイント) セクションで確認することができます。 Azure OpenAI Studio>[プレイグラウンド]>[コード ビュー] で値を確認することもできます。 エンドポイントの例: https://aoai-docs.openai.azure.com/ 。 |
AZURE_OPENAI_API_KEY |
この値は、Azure portal からリソースを確認する際に、 [Keys & Endpoint](キーとエンドポイント) セクションで確認することができます。 KEY1 または KEY2 を使用できます。 |
Azure portal でリソースに移動します。 [エンドポイントとキー] は [リソース管理] セクションにあります。 エンドポイントとアクセス キーをコピーします。これらは、API 呼び出しを認証するために両方とも必要です。 KEY1
または KEY2
を使用できます。 常に 2 つのキーを用意しておくと、サービスを中断させることなく、キーのローテーションと再生成を安全に行うことができます。
環境変数
キーとエンドポイントの永続的な環境変数を作成して割り当てます。
重要
API キーを使用する場合は、それを Azure Key Vault などの別の場所に安全に保存します。 API キーは、コード内に直接含めないようにし、絶対に公開しないでください。
AI サービスのセキュリティの詳細については、「Azure AI サービスに対する要求の認証」を参照してください。
setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"
Node アプリケーションを作成する
コンソール ウィンドウ (cmd、PowerShell、Bash など) で、ご利用のアプリ用に新しいディレクトリを作成し、そこに移動します。 次に、npm init
コマンドを実行し、package.json ファイルを使用してノード アプリケーションを作成します。
npm init
クライアント ライブラリをインストールする
次のコマンドを使用してクライアント ライブラリをインストールします。
npm install openai @azure/identity
アプリの package.json ファイルは依存関係を含めて更新されます。
音声ファイルを作成する
Text-to-speech.ts という名前の新しいファイルを作成し、好みのコード エディターで開きます。 次のコードを Text-to-speech.ts ファイルにコピーします。
import { writeFile } from "fs/promises"; import { AzureOpenAI } from "openai"; import { DefaultAzureCredential, getBearerTokenProvider } from "@azure/identity"; import type { SpeechCreateParams } from "openai/resources/audio/speech"; import "openai/shims/node"; // You will need to set these environment variables or edit the following values const endpoint = process.env["AZURE_OPENAI_ENDPOINT"] || "<endpoint>"; const speechFilePath = "<path to save the speech file>"; // Required Azure OpenAI deployment name and API version const deploymentName = "tts"; const apiVersion = "2024-08-01-preview"; // keyless authentication const credential = new DefaultAzureCredential(); const scope = "https://cognitiveservices.azure.com/.default"; const azureADTokenProvider = getBearerTokenProvider(credential, scope); function getClient(): AzureOpenAI { return new AzureOpenAI({ endpoint, azureADTokenProvider, apiVersion, deployment: deploymentName, }); } async function generateAudioStream( client: AzureOpenAI, params: SpeechCreateParams ): Promise<NodeJS.ReadableStream> { const response = await client.audio.speech.create(params); if (response.ok) return response.body; throw new Error(`Failed to generate audio stream: ${response.statusText}`); } export async function main() { console.log("== Text to Speech Sample =="); const client = getClient(); const streamToRead = await generateAudioStream(client, { model: deploymentName, voice: "alloy", input: "the quick brown chicken jumped over the lazy dogs", }); console.log(`Streaming response to ${speechFilePath}`); await writeFile(speechFilePath, streamToRead); console.log("Finished streaming"); } main().catch((err) => { console.error("The sample encountered an error:", err); });
Node.js 環境でコードを実行する場合は、
"openai/shims/node"
のインポートが必要です。 これにより、client.audio.speech.create
メソッドの出力の種類がNodeJS.ReadableStream
に正しく設定されるようになります。次のコマンドを使用してアプリケーションをビルドします。
tsc
次のコマンドでアプリケーションを実行します。
node Text-to-speech.js
前提条件
- Azure サブスクリプション。 無料で作成できます。
- サポートされているリージョンに Whisper モデルがデプロイされた Azure OpenAI リソース。 詳細については、「Azure OpenAI を使用してリソースを作成し、モデルをデプロイする」を参照してください。
- .NET 8.0 SDK
.NET アプリを作成する
dotnet new
コマンドを使用して、.NET アプリを作成します。dotnet new console -n TextToSpeech
新しいアプリのディレクトリに移動します。
cd OpenAISpeech
Azure.OpenAI
クライアント ライブラリをインストールします。dotnet add package Azure.AI.OpenAI
Azure OpenAI に認証して接続する
Azure OpenAI サービスにリクエストを行うには、次のいずれかのオプションを介するサービス エンドポイントと認証資格情報が必要です。
Microsoft Entra ID は、Azure サービスへの認証のための推奨される方法であり、キーベースの代替手段よりも安全です。
アクセス キーを使用すると、リソースに接続するための秘密キーを指定できます。
重要
アクセス キーは、慎重に使用する必要があります。 サービス アクセス キーを紛失した場合、または誤ってセキュリティで保護されていない場所で公開した場合、サービスが脆弱になる可能性があります。 アクセス キーを持つすべてのユーザーは、Azure OpenAI サービスに対するリクエストを承認できます。
Azure OpenAI エンドポイントを取得する
サービス エンドポイントは、Azure portal でリソースを調べるときに、[キーとエンドポイント] セクションで確認できます。 または、Azure AI Studio の [デプロイ] ページからエンドポイントを見つけることができます。 エンドポイントの例: https://docs-test-001.openai.azure.com/
。
Microsoft Entra ID を使用して認証する
Microsoft Entra ID 認証を使用する場合は、次の手順を完了する必要があります。
Azure.Identity
パッケージを追加します。dotnet add package Azure.Identity
ユーザー アカウントに
Cognitive Services User
ロールを割り当てます。 これは、OpenAI リソースの Azure portal の [アクセスの制御 (IAM)]>[ロールの割り当ての追加] で実行できます。az login
を使用して、Visual Studio または Azure CLI を使用して Azure にサインインします。
キーを使用して認証する
アクセス キーの値は、Azure portal でリソースを調べるときに、[キーとエンドポイント] セクションで確認できます。 KEY1
または KEY2
を使用できます。 常に 2 つのキーを用意しておくと、サービスを中断させることなく、キーのローテーションと再生成を安全に行うことができます。
アプリ コードを更新する
program.cs
の内容を次のコードに置き換え、プレースホルダーの値を自分の値で更新します。using Azure; using Azure.AI.OpenAI; using Azure.Identity; // Required for Passwordless auth var endpoint = new Uri( Environment.GetEnvironmentVariable("YOUR_OPENAI_ENDPOINT") ?? throw new ArgumentNullException()); var credentials = new DefaultAzureCredential(); // Use this line for key auth // var credentials = new AzureKeyCredential( // Environment.GetEnvironmentVariable("YOUR_OPENAI_KEY") ?? throw new ArgumentNullException()); var deploymentName = "tts"; // Default deployment name, update with your own if necessary var speechFilePath = "YOUR_AUDIO_FILE_PATH"; var openAIClient = new AzureOpenAIClient(endpoint, credentials); var audioClient = openAIClient.GetAudioClient(deploymentName); var result = await audioClient.GenerateSpeechAsync( "the quick brown chicken jumped over the lazy dogs"); Console.WriteLine("Streaming response to ${speechFilePath}"); await File.WriteAllBytesAsync(speechFilePath, result.Value.ToArray()); Console.WriteLine("Finished streaming");
重要
運用環境では、Azure Key Vault などの安全な方法で資格情報を保存してアクセスします。 資格情報のセキュリティについて詳しくは、「Azure AI サービスのセキュリティ」をご覧ください。
アプリケーションを実行するには、Visual Studio の上部にある
dotnet run
コマンドまたは実行ボタンを使用します。dotnet run
このアプリは、
speechFilePath
変数に指定した場所にオーディオ ファイルを生成します。 ご利用のデバイスでこのファイルを再生し、生成されたオーディオを聞きます。
リソースをクリーンアップする
Azure OpenAI リソースをクリーンアップして削除したい場合は、リソースを削除できます。 リソースを削除する前に、まずデプロイされたモデルを削除する必要があります。
次のステップ
- Azure OpenAI Service を使用してテキスト読み上げを操作する方法の詳細については、Azure OpenAI Service リファレンス マニュアルを参照してください。
- その他の例については、Azure OpenAI サンプルの GitHub リポジトリを参照してください