[通信実験]

音声デジピーターの実験2(小型軽量化へのアプローチ)


つくばF3


 前回の音声デジピーターの実験では、汎用のマイコンボード(Arduino UNO、または自作互換機)、音声録音再生LSI(APR9600)、そして音声合成LSI(ATP3012)等を使い、そのハードウェア、ソフトウェアの設計開発などを行ってきた。一方、実験装置の設置(仮設)自由度の向上や、持ち運びの負担軽減など小型軽量化も課題の一つであり、今回はそれに取り組んでみた。以下の写真(図1)に前回の試作機(2号機)と今回紹介する試作機(3号機)をそれぞれ示す。

 ご覧のように前回2号機は、電子回路基板3枚を積層し、単三型電池6本使用の電池ボックスから給電している。今回の試作機(3号機)は電源となる単四型電池4本の電池ボックス(スイッチ付き)の上に、電子回路基板を1枚載せるような構造になっていて、大幅な小型軽量化を試みた。



図1:前回の試作機(左:2号機)と 今回の試作機(右:3号機)



【小型軽量化へのアプローチ】

 基板上の部品の配置や配線などを工夫するだけでは大幅な小型化はあまり期待できない。よって使用部品をできるだけ小型のものに替えてみたり、また構成(アーキテクチャ)や回路そのものを見直して部品点数を減らすなどが効果的である。そこで前回試作機(初号機、2号機)の基板面積の大半を占めていた大型(600mil:28DIP)の音声録音再生LSIや音声合成LSIを使わずにマイコンボードのみでこれらの機能を実現できないか検討することにした。つまり、外付けのハードウェアをできるだけ減らし、その部分をソフトウェアで置き換えることで小型化できないか考えたわけである。

 軽量化へのアプローチとしては、全体の重量の多くを占めている電源(電池)の低電圧化も効果的である。前回はマイコンボードの動作電圧(約7V~)の確保のため、単三型電池6本(約162g:実測値)を使用した。一方、後述する今回使用したマイコンボード(図2:RP2040ベース基板)は外部電源として5V程度の電源電圧(内部電圧3.3V)で動作可能であり、単四型電池4本(約52g:実測値)を使用することで約110g軽量化できた。また前回の総重量(ケーブル類や無線装置を除く)と今回は、それぞれ実測値で約250g、約96gであり、トータルで約154g軽量化された。特小機が約100~200gほどなので、トランシーバー1台分ほど軽量化できたことになる。

項目前回(2号機)3号機
重量(電池含む)約250g約96g
基板寸法(mm:WxDxH)約55x80x45約46x46x20
電源(電池のみ)単三型6本(約162g)単四型4本(約52g)

表1:前回(2号機)と3号機の比較


【今回使用のマイコンボード】

 前回のレポートでも示したように、録音再生に必要なメモリ量は以下に示す計算式(1)から約160Kバイト以上必要となる。前回使用のマイコンボード(Arduino UNO)では搭載RAM容量が僅か2Kバイト(実際に使用可能なのはこの約半分)しかないため、基本動作(中継動作)をこのボードだけで実現するのは非常に困難(外付けのメモリデバイスが必要)である。

 必要なメモリ量(ビット)= サンプリング周波数(Hz) * 量子化(ビット)* 録音時間(秒) ...(1)

以下の条件で計算してみると、

 サンプリング周波数:8KHz(無線電話:必要な周波数帯域300~3000Hz)
 量子化ビット数:8ビット(無線電話音質)
 録音時間:20秒(一通報毎に必要な時間)

 必要なメモリ量(バイト)= 約160KB

 そこで十分な処理速度と録音再生に必要なメモリ容量を搭載した別のマイコンボードを探したところ、SeeedStudio社製のマイコンボード(Seeed Xiao RP2040)がこれら条件を満たしており、これを使って評価することにした。図2(左)が前回(初号機)使用のマイコンボード(約69mm x 53mm)、図2(右)が今回使用したマイコンボード(約18 mm x 21 mm)である。

 ご覧通りとても小さなボード(切手と比較)であり、基板上にはさらに小さなMCUチップ、RP2040(図3:約7mm角)、電源IC、メモリICなどが載り、非常にコンパクトにまとめられている。動作周波数は133MHz、搭載RAMサイズは264Kバイトである。プログラム格納用の外付けROM(フラッシュメモリ)のサイズは2Mバイト(2048Kバイト)となっていて、前回マイコンボードとして使用したArduino UNO(16MHz、RAM:2KB、ROM:32KB)とは桁違いの動作速度と大容量メモリを有している。しかも価格は約5~6ドル(2023年12月現在)と低価格である。

図2:Arduino UNO(左) と Seeed Xiao RP2040(右)

itemArduino UNOSeeed Xiao RP2040
MCU(CPU)ATmega328P(AVR)RP2040(ArmCortexM0+:Dual-Core)
GPIO2011
UART11
I2C11
SPI11
ADC64
PWM611
I/O電圧(V)5.03.3
RAM(KB)2264
ROM(KB)322048(2MB:外付けFlash)
Clock(MHz)16133
USB portType-BType-C

表2:Arduino UNO と Seeed Xiao RP2040 機能比較

 RP2040は、A/D変換器およびD/A変換器(PWM)を内蔵しているので、受信音声を直接サンプリングしてデジタル化された音声データを搭載RAMへ書き込んで録音したり、また、このRAMから音声データを読み出してアナログ音源へ変換し、送信音声とすることが可能である。そして中継動作の基準信号となるBUSY信号は前回の実験と同様MCU内でソフトウェア処理により生成することができるので、このマイコンボードをベースに基本動作(中継機能)をほぼ実現できる。

図3:RP2040(Raspberry Pi Ltd)


【ID送出、音声合成について】

 今回もID送出用にモールス信号などをMCUから一定間隔(約3分)で送出できるようプログラムを用意した。また音声合成によるID送出も実現するため、AI(人工知能)技術を応用したVOICEVOX(音声合成ソフト)を使って、先ず音声データ(.wav)を作成し、図4に示すように、得られたデジタルデータ(抽出、加工後)をプログラムメモリ(ROM)へ直接書き込むことにした。ID送出の際はROM上の音源データを読み出し、D/A変換器(PWM)を通しアナログ音源を再生、送信音声とした。

図4:VOICEBOXを用いた合成音声の作成フロー

 一つの合成音声ID送出時間を最大10秒間とすると、必要なメモリ量も上記計算式(1)から同様に求めることができる。

以下の条件で計算してみると、

 サンプリング周波数:8KHz
 量子化ビット数:8ビット
 録音時間:10秒(合成音声ID送出時間)

 必要なメモリ量(バイト)= 約80KB

 仮に3パターンの合成音声データ(約240Kバイト)をROMへすべて書き込んだとしても、最大2Mバイト(約2048Kバイト)用意されているので、まだ十分に余裕がある。よって音声合成LSI等を使わず、合成音声によるID送出をこのマイコンボードのみで実現することができる。

音声ファイル例(ずんだもん by VOICEVOX)

 ところで、プログラムメモリ(ROM)は前述の通り、まだ十分余裕(残り1Mバイト以上)があるので、合成音声IDと同様の方法を用い、音声周波数帯域(~3KHz)で画像の送受信が可能なSSTV(Slow Scan Television)によるID送出ができるようプログラムとその音源データ(約320Kバイト)を追加している。

 一つの画像ID送出時間を最大40秒間とすると、必要なメモリ量も上記計算式(1)から同様に求めることができる。

以下の条件で計算してみると、

 サンプリング周波数:8KHz
 量子化ビット数:8ビット
 録音時間:40秒(画像ID送出時間)

 必要なメモリ量(バイト)= 約320KB

 一般的な動画伝送(通常のテレビ放送など)の場合、1チャンネル当たり、数MHz以上に及ぶ広帯域を使って1秒間に30枚程度の画像を伝送している。SSTVの場合はその約1000分の1程度の狭帯域(~数KHz)で、約30~120秒と長い時間をかけて1枚の画像(カラー)を送信している。以下に送信画像例とその音源例(Robot36:320x240画素)をそれぞれ示す。SSTV音源はMMSSTV(SSTV送受信ソフト)を使って作成した。

 最近はスマートフォン(iOS、Android等)やタブレット上で動作するSSTVアプリがあるようなので、これらを利用して画像の送受信を楽しむのも面白いかもしれない。

図5:ID画像例(カラーパターン+文字列)
SSTV音源例(Robot36 by MMSSTV)


【回路構成】

図6:試作機(3号機)の回路構成

 前回(初号機、2号機)に比べ、3号機は録音再生、ID送出機能などをすべて一つのマイコンボードで行えるため、とてもシンプルな構成となった。

 無線装置のSP端子から出力された受信音声は、BUSY検出増幅用のOPAMP(オペアンプ)と録音増幅用へそれぞれ分岐入力され、増幅後、それらアナログ出力はマイコンボードの別々のアナログ入力端子(AIN_1、AIN_2)へ入力される。BUSY検出に利用するスケルチオープン時のノイズは極めて小さい電圧レベルであるため、十分に検出できるレベルまで電圧増幅する必要があり、BUSY検出用増幅では約40dB(100倍)と高い利得を得るよう設定している。また音声録音用増幅は余裕を見て約20dB(10倍)に設定している。

 音声出力(PWM)は、再生音声(AOUT_1)とID送出(AOUT_2:モールス信号、合成音声他)に分かれ、それぞれをレベル調整後、ミキシングして無線装置のマイク端子へ入力される。

 無線装置の送受信をコントロールするPTT信号は、再生音声やID送出の際にマイコンボードから出力される。


【考察】

図7:無線装置(DJ-CH1)と接続された3号機

図8:宝篋山山頂(背景は筑波山)に仮設され稼働中の音声デジピーター(巾着袋の中に本体を収納)

 専用の音声録音再生LSIや音声合成LSIを使わず、マイコンボード(Seeed Xiao RP2040)1枚を使って音声デジピーターを試作した。部品点数の削減や低電圧化などを行って大幅な小型軽量化が達成できた。フィールド試験等で良好に動作しており、現在までのところ、動作上大きな問題は発生していないようである。引き続き移動運用などで動作試験を継続する予定である。


【参考文献など】

Seeed Xiao RP2040Seeed Studio Ltd
Raspberry Pi Documentation of RP2040Raspberry Pi Ltd
無料で使える中品質なテキスト読み上げ・歌声合成ソフトウェアVOICEVOX
SSTV 通信ソフト MMSSTVJE3HHT局HP
音声デジピーターの実験通信実験のページ(つくばF3)


【更新】

2024年 2月28日:Initial Release
2024年 3月 4日:誤字脱字の修正、および図8(仮設の様子)を追加


【ご注意】

本記事を利用して生じたトラブルに関しては、筆者は責任を負いかねますので、ご了承ください。