特集
» 2017年06月23日 05時00分 UPDATE

特集: 音声合成APIの活用:音声合成APIを使用して、C#でテキスト読み上げアプリを作成しよう (1/3)

入力したテキストから人工的な音声を出力する「音声合成」をC#で行う1つの手法として、docomo Developer supportの音声合成API(エーアイ提供のサービス利用)を活用する方法を紹介する。

[一色政彦,デジタルアドバンテージ]
「特集: 音声合成APIの活用」のインデックス

連載目次

 音声合成とは、入力したテキストデータを人工的な音声のデータに変換する機能のことである。音声合成を行うためのエンジンやAPIはさまざまなベンダーから提供されているが、本稿では「音声合成 API」でGoogle検索すると、執筆時点(2017年6月)で1位に掲載された、

をC#のプログラムから用いて、音声合成をする方法を紹介する。

docomo音声合成APIの概要

 詳細は上記のリンク先を参照してほしいが、本題に入る前に、このAPIの概要とこれを使う上で気を付けてほしい点を簡単に示しておこう。

 docomo音声合成APIは、その名前からも分かるようにNTTドコモが提供する開発者向けのAPIである。ただしAPIの先にある内部サービスは、(執筆時点で)以下の3社により提供されており、目的や用途などに応じてどのサービスを活用するかをAPI利用者が選択しなければならない。

 これらの音声合成サービスでどのような音声を生成できるのかは、ぜひ上のリンク先を訪れてデモを試してほしい*1。いずれのデモでも、任意のテキスト文章を入力して実行すると、その文章を音声でしゃべらせることができる。

*1 NTTテクノクロスはデモ実行の場所を見つけられなかったので、本稿ではリンクを省略した。


 docomo音声合成APIでこれらのサービスを利用する際には、利用規約が用意されていることに注意してほしい。詳しくは下記のリンク先のガイドラインを参照してほしいが、エーアイ提供の音声合成サービスが最も自由に使えるので、本稿でもこれを使った利用方法を紹介している。

 ちなみに、HOYAの音声合成サービスは、執筆時点でGoogle検索すると1位に表示されており、音声合成サービスの中でも人気が高いことが推察される。しかも下記のリンク先に示すようにHOYA自身でWeb APIを公開しており、各プログラミング言語に対するAPIライブラリの提供も手厚い。

 C#のAPIライブラリも提供されているので、HOYAのサービスを使いたい場合は、(docomo音声合成APIではなく)VoiceText Web APIを直接使用した方が使い勝手がよいだろう。VoiceText Web APIを使った開発はライブラリを利用すればすんなりとプログラミングが実現できるので、本稿では説明を割愛する。

エーアイ提供のdocomo音声合成APIを使用するための準備

 それでは早速、docomo音声合成APIの使い方を説明していこう。

docomo Developer supportへのアカウント登録

 まずはdocomo Developer supportにアカウントを登録する必要がある。これには下記のリンク先を訪れてページ内の説明を読んでから、実際にアカウント登録を行ってほしい。

API実行サンプルを試してみる

 アカウントの登録が終わったら、上部のナビゲーションバーから[API/ツール]を選択して[API/ツール]画面に移動し、ページ中ほどの[音声合成]を選択して音声合成APIのトップページに移動する。すると、[試してみる]ボタンがあるので、これをクリックする(図1)。

図1 [試してみる]ボタン 図1 [試してみる]ボタン

 すると[APIコンソール]ページが表示され、(執筆時点では)以下のようなREST API情報が表示されるのを確認できる。

  • サービス: 音声合成
  • エンドポイント: SSML 【Powerd by エーアイ】
  • メソッド: POST
  • エンドポイントURL: https://api.apigw.smt.docomo.ne.jp/aiTalk/v1/textToSpeech?APIKEY=xxxxxxxxxxxxxxxxx

  ・[APIKEY]: xxxxxxxxxxxxxxxxx(取得方法は後述)

  • HTTPリクエストヘッダ:

  ・[Content-Type]: application/ssml+xml
  ・[Accept]: audio/L16
  ・[Content-Length]: 241

  • HTTPリクエストボディ: リスト1参照

<?xml version="1.0" encoding="utf-8" ?>
<speak version="1.1">
<voice name="nozomi">
のぞみです。おはようございます。
</voice>
<break time="1000ms" />
<voice name="seiji">
せいじです。こんにちは。
</voice>
</speak>

リスト1 HTTPリクエストボディのサンプル

 上記の内容でREST APIを呼び出せば、簡単に音声合成が行えることが分かる。あとはこれをC#で実装するだけだ。難しいところはない。

 試しにこのREST APIを呼び出すには、[実行]ボタンをクリックすればよい(図2)。

図2 [実行]ボタン 図2 [実行]ボタン

 これにより音声合成が行われ、[実行結果(HTTPボディ部)]欄に[音声データ(Binary)をダウンロード]という表記があり(図3)、その[ダウンロード]リンクをクリックすると、「ダウンロード.lpcm」という名前のファイルがダウンロードされる。エーアイ提供のサービスでは、このLPCM(リニアPCM)形式の音声ファイルとなるので注意してほしい(ちなみにHOYA提供のサービスだと、より一般的なWAV形式ファイルを生成できる)。

図3 [実行結果(HTTPボディ部)]欄 図3 [実行結果(HTTPボディ部)]欄
枠内に表示されている「音声データのフォーマット」の【符号化方式】【チャネル数】【サンプル周波数】【ビット深度】は音声データを開く際に必要となるのでメモしておこう。

音声ファイルを再生/変換してみる

 .lpcmファイルを再生したり、他の音声フォーマットに変換したりしたい場合には、Audacity(Windows/macOS/Linux対応)が便利だ。

 上記のリンク先から適切なOS用のインストーラーをダウンロードしてインストールしてほしい。

 Audacityを起動したら、メニューバーから[ファイル]−[取り込み]−[ロー (Raw) データの取り込み]をクリックして、先ほど出力された「ダウンロード.lpcm」ファイルを開く。すると、図4のように[Raw データの取り込み]ダイアログが表示される。

図4 [Raw データの取り込み]ダイアログ 図4 [Raw データの取り込み]ダイアログ

 ここで先ほどの図3の[実行結果(HTTPボディ部)]欄の内容に基づき、以下のように指定して[取り込み]ボタンをクリックする。

  • [エンコーディング]: 「Signed 16-bit PCM」
  • [バイト順序]: 「ビックエンディアン (バイトオーダ)」
  • [チャンネル]: 「1 チャンネル (モノラル)」
  • [オフセットの開始]: 「0」バイト
  • [インポートするために]: 「100」%
  • [サンプリング周波数]: 「16000」Hz

 あとは、Audacityの上部にある[再生]ボタンをクリックすると音声が再生され、もしくはメニューバーから[ファイル]−[オーディオの書き出し]を実行するとWAV形式やMP3形式などより一般的な音声ファイル形式に変換してファイル出力することができる。

 どのような音声になるのかは実際に各自で試してみてほしい。本稿では音声データの著作権に配慮して、サンプル音声は載せないことにする。ご了承いただきたい。

 こうやってREST APIを呼び出せるわけだが、前述の「API実行サンプルを試してみる」の節と図2に示したように[APIKEY]が必要である。そこで次に、APIキーを申請する方法を説明しよう。

       1|2|3 次のページへ

Copyright© 1999-2017 Digital Advantage Corp. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。