MCUの DAC( Digital to Analog Converter )を使用して発音や発話を行う機能です。
◀ この記事の前に: 複数のMCUをつなぐ
▶ この記事の次に:
発音発話の概要
オプションとして追加搭載する回路構成は以下のとおりです。

標準では Peripheral MCUの DAC出力で発音発声を行います。
MCUの DAC出力は増幅器を通して、スピーカーで鳴らします。スピーカーは胴体前面に設置しています。
発音発声機能を使用しない場合に、省電力を行う目的で、Periperal MCUのプログラムから増幅器の ON/OFFできます。
Technical Considerations DAC と ADC
DAC は Digital to Analog Converter の略で、デジタル・アナログ変換器です。ADC は Analog to Digital Converter の略で、アナログ・デジタル変換器です。
ADC は アナログ情報をデジタル信号に変換します。MCU などはプログラムも含めてデジタルで動いています。しかし、システムの外部(環境)はアナログの場合が少なくありません。温度、湿度、質量、電圧、変位、… これらの値はアナログ値です。MCU でこれらを扱うためにはアナログ値をデジタル値に変換する必要があります。DAC はその逆です。MCU 内でデジタル処理していた情報をアナログ値として出力するときに使用します。今回のように 音声で出力するときはアナログに変換する必要があります。
プログラミングの情報
コーディングに必要な必要な仕様は以下のとおりです。
ポートの割り当て
名 称 | ESP32 Pin | ESP32 ポート | 使 途 |
---|---|---|---|
AMP-P | 10 | IO25 / DAC1 | DAC出力 |
ESP32 の DAC出力は GPIO25( DAC1 )と GPIO26( DAC2 )です。Qumcum Lab. は DAC1を使用しています。
コードの出力ポートの定義は、ESP32 ポートの番号で指定します。( 例:const uint8_t AMP_P = 25; )
省電力制御
DAC出力回路( 発音・発話回路 )の電力は +5Vアナログ系として独立しています。この電源はスイッチ IC( TPS22918DBVR )により ON/OFFができます。発音、発声をする場合は事前にこの回路の電源を有効( PS-AMP( IO26 )をHigh )にしておきます。使用していない場合はこの回路の電源を遮断することにより消費電力を低減できます。
名 称 | ESP32 Pin | ESP32 ポート | 使 途 |
---|---|---|---|
PS-AMP | 11 | IO26 / GPIO | 省電力制御 High: 電源 ON Low: 電源 OFF |
ライブラリ
発音はライブラリを使用していません。
発話は ESP32向けの音声合成ライブラリである AquesTalk-ESP32 Ver.2.0( 株式会社アクエスト )を使用しています。発音に関してはこちらをご覧ください。
データの構造
データの構造は以下のとおりです。
グローバル定義
グローバル定義は以下のとおりです。
名 称 | 型 | 値 | 説 明 |
---|---|---|---|
DAC_ON | int | HIGH | DAC 増幅回路の電源 ON( 正論理 ) |
DAC_OFF | int | LOW | DAC 増幅回路の電源 OFF( 正論理 ) |
コード
コードは以下のとおりです。
外部関数
setVDCpowerControl( int switchPower )
DAC 増幅回路の電源を ON / OFF します。
引 数:
・電源の操作( switchPower ):
DAC_ON : DAC 増幅回路の電源 ON
DAC_OFF: DAC 増幅回路の電源 OFF
setDACpowerControl( int switchPower ) {
digitalWrite( PIN_PS_AMP, switchPower );
}
内部関数
setup() 内
void setup( void ) {
・・・
/* Initialize DAC */
pinMode( PIN_AMP_P, OUTPUT );
setDACpowerControl( DAC_OFF ); //
・・・
}
参考情報
参考になる情報は以下のとおりです。
このホームページ内
- 発音・発声( DAC出力 / ハードウエア ): MCUの DACを使用して発音や発声を行うハードウエアを説明します。
- Speak interpreter ( 概要 ): 発声処理の最上位、Speak interrupter の概要です。
- Speak interpreter( 操作説明 ): アプリケーションからの操作方法です。( API )
- Speak interpreter( コード ): コードの詳細を説明します。
- Voice driver( 概要 ): 発音そのものの処理です。( API )
- Voice driver( 操作説明 ): 個々のサーボモータを制御する方法です。
- Voice driver( コード ): コードの詳細を説明します。
- 音声合成ライブラリ: ライブラリの概要や導入方法を説明します。