C# で Text-to-Speech API を使用する

1. 概要

Google Cloud Text-to-Speech API(ベータ版)を使用すると、デベロッパーは自然に聞こえる人間の音声を合成し、再生可能な音声としてアプリケーションに組み込むことができます。Text-to-Speech API は、テキストまたは音声合成マークアップ言語(SSML)の入力を、MP3 や LINEAR16(WAV ファイルで使用されるエンコーディング)などの音声データに変換します。

この Codelab では、C# で Text-to-Speech API を使用することに焦点を当てます。利用可能な音声の一覧表示と、テキストから音声への合成の方法について学習します。

学習内容

  • Cloud Shell を使用する方法
  • Text-to-Speech API を有効にする方法
  • API リクエストを認証する方法
  • C# 用 Google Cloud クライアント ライブラリをインストールする方法
  • 利用可能な音声を一覧表示する方法
  • テキストから音声を合成する方法

必要なもの

  • Google Cloud Platform プロジェクト
  • ChromeFirefox などのブラウザ
  • C# の使用経験

アンケート

このチュートリアルをどのように使用されますか?

通読するのみ 通読し、演習を行う

C# のご利用経験はどの程度ありますか?

初心者 中級者 上級者

Google Cloud Platform サービスのご利用経験についてどのように評価されますか?

初心者 中級者 上級者

2. 設定と要件

セルフペース型の環境設定

  1. Google Cloud Console にログインして、プロジェクトを新規作成するか、既存のプロジェクトを再利用します。Gmail アカウントも Google Workspace アカウントもまだお持ちでない場合は、アカウントを作成してください。

295004821bab6a87.png

37d264871000675d.png

96d86d3d5655cdbe.png

  • プロジェクト名は、このプロジェクトの参加者に表示される名称です。Google API では使用されない文字列です。いつでも更新できます。
  • プロジェクト ID は、すべての Google Cloud プロジェクトにおいて一意でなければならず、不変です(設定後は変更できません)。Cloud コンソールでは一意の文字列が自動生成されます。通常は、この内容を意識する必要はありません。ほとんどの Codelab では、プロジェクト ID(通常は PROJECT_ID と識別されます)を参照する必要があります。生成された ID が好みではない場合は、ランダムに別の ID を生成できます。または、ご自身で試して、利用可能かどうかを確認することもできます。このステップ以降は変更できず、プロジェクトを通して同じ ID になります。
  • なお、3 つ目の値として、一部の API が使用するプロジェクト番号があります。これら 3 つの値について詳しくは、こちらのドキュメントをご覧ください。
  1. 次に、Cloud のリソースや API を使用するために、Cloud コンソールで課金を有効にする必要があります。この Codelab の操作をすべて行って、費用が生じたとしても、少額です。このチュートリアルの終了後に請求が発生しないようにリソースをシャットダウンするには、作成したリソースを削除するか、プロジェクトを削除します。Google Cloud の新規ユーザーは、300 米ドル分の無料トライアル プログラムをご利用いただけます。

Cloud Shell を起動する

Google Cloud はノートパソコンからリモートで操作できますが、この Codelab では、Google Cloud Shell(Cloud 上で動作するコマンドライン環境)を使用します。

Cloud Shell をアクティブにする

  1. Cloud Console で、[Cloud Shell をアクティブにする] d1264ca30785e435.png をクリックします。

cb81e7c8e34bc8d.png

Cloud Shell を初めて起動する場合は、その内容を説明する中間画面が表示されます。中間画面が表示された場合は、[続行] をクリックします。

d95252b003979716.png

すぐにプロビジョニングが実行され、Cloud Shell に接続されます。

7833d5e1c5d18f54.png

この仮想マシンには、必要な開発ツールがすべて用意されています。仮想マシンは Google Cloud で稼働し、永続的なホーム ディレクトリが 5 GB 用意されているため、ネットワークのパフォーマンスと認証が大幅に向上しています。このコードラボで行う作業のほとんどはブラウザから実行できます。

Cloud Shell に接続すると、認証が完了しており、プロジェクトに各自のプロジェクト ID が設定されていることがわかります。

  1. Cloud Shell で次のコマンドを実行して、認証されたことを確認します。
gcloud auth list

コマンド出力

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. Cloud Shell で次のコマンドを実行して、gcloud コマンドがプロジェクトを認識していることを確認します。
gcloud config list project

コマンド出力

[core]
project = <PROJECT_ID>

上記のようになっていない場合は、次のコマンドで設定できます。

gcloud config set project <PROJECT_ID>

コマンド出力

Updated property [core/project].

3. Text-to-Speech API を有効にする

Text-to-Speech API の使用を開始する前に、API を有効にする必要があります。Cloud Shell で次のコマンドを使用して、API を有効にできます。

gcloud services enable texttospeech.googleapis.com

4. C# 用 Google Cloud Text-to-Speech API クライアント ライブラリをインストールする

まず、Text-to-Speech API サンプルの実行に使用する簡単な C# コンソール アプリケーションを作成します。

dotnet new console -n TextToSpeechApiDemo

アプリケーションが作成され、依存関係が解決されたことがわかります。

The template "Console Application" was created successfully.
Processing post-creation actions...
...
Restore succeeded.

次に、TextToSpeechApiDemo フォルダに移動します。

cd TextToSpeechApiDemo/

また、Google.Cloud.TextToSpeech.V1 NuGet パッケージをプロジェクトに追加します。

dotnet add package Google.Cloud.TextToSpeech.V1
info : Adding PackageReference for package 'Google.Cloud.TextToSpeech.V1' into project '/home/atameldev/TextToSpeechDemo/TextToSpeechDemo.csproj'.
log  : Restoring packages for /home/atameldev/TextToSpeechDemo/TextToSpeechDemo.csproj...
...
info : PackageReference for package 'Google.Cloud.TextToSpeech.V1' version '1.0.0-beta01' added to file '/home/atameldev/TextToSpeechDemo/TextToSpeechDemo.csproj'.

これで、Text-to-Speech API を使用する準備が整いました。

5. 利用可能な音声の一覧表示

このセクションでは、まず音声合成に使用できる英語の音声をすべて一覧表示します。

まず、Cloud Shell の右上にあるコードエディタを開きます。

fd3fc1303e63572.png

TextToSpeechApiDemo フォルダ内の Program.cs ファイルに移動し、コードを次のコードに置き換えます。

using Google.Cloud.TextToSpeech.V1;
using System;

namespace TextToSpeechApiDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            var client = TextToSpeechClient.Create();
            var response = client.ListVoices("en");
            foreach (var voice in response.Voices)
            {
                Console.WriteLine($"{voice.Name} ({voice.SsmlGender}); Language codes: {string.Join(", ", voice.LanguageCodes)}");
            }
        }
    }
}

1 ~ 2 分ほど時間を取ってコードを確認します。Cloud Shell に戻ってアプリを実行します。

dotnet run

次の出力が表示されます。

en-US-Wavenet-D (Male); Language codes: en-US
en-AU-Wavenet-A (Female); Language codes: en-AU
en-AU-Wavenet-B (Male); Language codes: en-AU
en-AU-Wavenet-C (Female); Language codes: en-AU
en-AU-Wavenet-D (Male); Language codes: en-AU
en-GB-Wavenet-A (Female); Language codes: en-GB
en-GB-Wavenet-B (Male); Language codes: en-GB
en-GB-Wavenet-C (Female); Language codes: en-GB
...
en-GB-Standard-A (Female); Language codes: en-GB
en-GB-Standard-B (Male); Language codes: en-GB
en-AU-Standard-D (Male); Language codes: en-AU

概要

このステップでは、音声合成で使用できる英語の音声をすべて一覧表示しました。また、利用可能な音声の一覧はサポートされている音声ページでも確認できます。

6. テキストから音声を合成する

Text-to-Speech API を使用して、文字列を音声データに変換できます。音声合成の出力はさまざまな方法で構成できます。たとえば、ユニークな音声を選択することや、ピッチの出力、音量、発話速度、サンプルレートを調節することが可能です。

テキストから音声ファイルを合成するには、TextToSpeechApiDemo フォルダ内の Program.cs ファイルに移動し、コードを次のコードに置き換えます。

using Google.Cloud.TextToSpeech.V1;
using System;
using System.IO;

namespace TextToSpeechApiDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            var client = TextToSpeechClient.Create();

            // The input to be synthesized, can be provided as text or SSML.
            var input = new SynthesisInput
            {
                Text = "This is a demonstration of the Google Cloud Text-to-Speech API"
            };

            // Build the voice request.
            var voiceSelection = new VoiceSelectionParams
            {
                LanguageCode = "en-US",
                SsmlGender = SsmlVoiceGender.Female
            };

            // Specify the type of audio file.
            var audioConfig = new AudioConfig
            {
                AudioEncoding = AudioEncoding.Mp3
            };

            // Perform the text-to-speech request.
            var response = client.SynthesizeSpeech(input, voiceSelection, audioConfig);
            
            // Write the response to the output file.
            using (var output = File.Create("output.mp3"))
            {
                response.AudioContent.WriteTo(output);
            }
            Console.WriteLine("Audio content written to file \"output.mp3\"");
        }
    }
}

コードを 1 ~ 2 分ほどかけて確認し、テキストからオーディオ ファイルを作成するためにコードがどのように使用されているかを確認します。

Cloud Shell に戻ってアプリを実行します。

dotnet run

次の出力が表示されます。

Audio content written to file "output.mp3"

コードエディタ内で、mp3 ファイルをダウンロードして、ローカルマシンで再生できます。

a4b9578505422dad.png

概要

このステップでは、Text-to-Speech API を使用して文字列を音声 mp3 ファイルに変換しました。詳しくは、音声ファイルの作成をご覧ください。

7. 完了

このラボでは、C# を使用して Text-to-Speech API を使用し、音声ファイルに対してさまざまな種類の文字起こしを行う方法を学びました。

クリーンアップ

このクイックスタートで使用するリソースに対して Google Cloud Platform アカウントに課金されないようにするには:

  • Cloud Platform Console に移動します。
  • シャットダウンするプロジェクトを選択し、上部の [削除] をクリックします。これにより、プロジェクトの削除がスケジュールされます。

詳細

ライセンス

この作業はクリエイティブ・コモンズの表示 2.0 汎用ライセンスにより使用許諾されています。