ソフトウエア

音声合成ライブラリ

MCUの DAC( Digital to Analog Converter )を使用して発声を行う機能です。発声は 音声合成ライブラリを使用しています。

◀ この記事の前に: 発音・発声( DAC出力 )
▶ この記事の次に: 

発声の概要

発声は Peripheral MCUの DAC出力で行います。発声は ESP32向けの音声合成ライブラリである AquesTalk-ESP32 Ver.2.0( 株式会社アクエスト )を使用しています。

AquesTalk-ESP32 Ver.2.0 の特徴
・テキストからの音声合成
テキスト情報からリアルタイムに音声を生成します。録音タイプの音声合成と違い、その都度ナレーターの声を収録する必要がありません。
・超小型・最軽量
他に類を見ない小ささの音声合成エンジン。ROM 28KB、RAM 500B から動作します。
・耳なじみの良い声
聴きやすさや明瞭性を重視し、人の声にこだわらない高品質な音声を合成します。
・実装が簡単
ANSI C言語準拠のコードで記述されています。外部ライブラリやファイルシステムを使わないため、OSを持たない環境へも簡単に移植・実装できます。
引用: AquesTalk ESP32 / 株式会社アクエスト

音声合成ライブラリ

音声合成ライブラリの仕様

音声合成ライブラリ( AquesTalk-ESP32 Ver.2.0 )の仕様は以下のとおりです。
Qumcum Lab. の入力データ形式は「ローマ字表記音声記号列( ASCII )」、必要メモリサイズは「ROM:約28KB, RAM:約500B ( 音声記号列からの合成のみの場合 )」です。

ライブラリ形式ESP32 用static ライブラリ
動作確認環境Arduino core for ESP32、 ESP-IDF
入力データ形式漢字仮名交じりテキスト( UTF8 / UTF16LE )
または、ローマ字表記音声記号列( ASCII )
出力データ形式WAV フォーマット( 8KHz サンプリング,16bitPCM,モノラル )データ
*24KHzサンプリングにアップサンプリング機能を含む
声種picoF4 Rev.2
関数I/FC 関数呼び出し
必要メモリサイズROM:約200KB, RAM:約21KB ( 漢字仮名交じり文からの合成の場合 辞書データ別途 )
ROM:約28KB, RAM:約500B ( 音声記号列からの合成のみの場合 )

引用: AquesTalk ESP32 / 株式会社アクエスト

音声合成ライブラリのライセンス

この音声合成ライブラリはライセンス( 有償 )が必要です。
サンプルプログラムはライセンスを取得して使用しています。Peripheral MCUの改造を行う場合、ライセンスキーの設定( コードへの組み込み )が必要です。
ライセンスに関してはこちらをご覧ください。

ESP32 の MACアドレスの取得方法( ご注意 )
前項のライセンスに関する記載の中に「ライセンスキーの入手」が書かれています。ライセンスキーは音声合成ライブラリを搭載する ESP32の MACアドレスが必要になります。ESP32の MACアドレスを調べる方法も記載されています。このコードではエラー( ‘ESP_MAC_BT’ was not declared in this scope’ESP_MAC_BT’ was not declared in this scope )が生じます。
ESP32の MACアドレスは以下の記事に記載の方法で取得できます。
ESP32のWiFiやBluetoothのMACアドレスを調べる方法: Qiita / @Kurogara
コードを書き込み後にシリアルモニタを開き、再起動することにより MACアドレスなどをモニタに表示します。

発音のデータ( 文字列 )

音声合成ライブラリで発音に使用する文字列は以下の二つの方法があります。

  • 漢字を含む任意の文
  • 音声記号列

音声合成ライブラリは、言語処理部( AqKanji2Koe )と規則音声合成部( AquesTalk )で構成されています。漢字を含む任意の文は、言語処理部に入力することにより音声記号列に変換できます。音声記号列を規則音声合成部に入力することにより音声波形に変換できます。
Qumcum Lab. は規則音声合成を使用します。サンプルプログラムは容量などの関係から言語処理部を搭載していません。( 言語処理部は辞書データが必要で、容量が大きいため SDメモリなどに搭載する必要があります。)

音声記号列はローマ字とイントネーションを表す記号で構成した ASCII文字列です。
音声記号列の詳細は以下をご覧ください。
ローマ字音声記号列仕様書: 発音のデータ(文字列)の仕様書 / 株式会社 アクエスト

発声処理の手順

発声処理には音声合成ライブラリ( AquesTalk-ESP32 Ver.2.0 )と、ESP32の DACを動作させるための I2Sライブラリを使用します。
初期化は AquesTalkの初期化( CAqTkPicoInit() )で行います。発声時は I2Sと DACの出力波形を増幅する DAC増幅回路の電源の準備を行います。発声終了時は I2SのリリースとDAC増幅回路の電源を OFFにします。発声は、AquesTalkの波形のセット( CAqTkPicoF_SetKoe() )とセットした波形の DAC出力( CAqTkPicoSyntheFrme() )を発声が続くまで繰り返し実行します。

発音は Voice driverが担い、全体の制御は Speak interpreterが行います。

いずれの処理も APIでアプリケーションなど外部から操作できる関数を持ち、その関数を介して操作します。

発声時だけ DAC増幅回路の電源の ONにしますので省電力化を実現できます。

音声合成ライブラリに関する情報

音声合成ライブラリ( AquesTalk-ESP32 Ver.2.0 )に関する情報は以下をご覧ください。

参考情報

参考になる情報は以下のとおりです。

このホームページ内

他のWebサイト

カテゴリー
最近の記事 おすすめ記事

記事一覧を表示するには、カスタム投稿「ブログ」にて、4つ以上記事を作成してください。

記事一覧を表示するには、カスタム投稿「ブログ」にて、4つ以上記事を作成してください。

TOP