2025年3月20日木曜日

音声合成LSI(ATP3011とATP3012)を使ってみる〜MacBook Proからコントロールする

以前の続きです。(長くなってしまったので、2回に分けました)株式会社アクエストが開発している「音声合成LSI」を秋月電子通商で購入して、使えるように準備するところまで書きました。念の為、「音声合成LSI「AquesTalk pico LSI」」の「ATP3011」と「ATP3012」のデータシートのリンクも再掲しておきます。

前回は、この「ATP3011」と「ATP3012」がMICROCHIPAtmelを買収)のAtmega328をベースにして作られていて、Arduino(及びその互換マイコンボード)のATmega328と載せ替えれば簡単に使えるようになるという情報をもとに準備をしました。秋月電子通商で販売されているAE-Atmegaを使って作った「Diavolino」ベースの自作Arduino互換ボードを引っ張り出してきて、実験環境を整えるところまで書きました。今回は、その続きをやっていきたいと思います。

まずは自作Arduino互換ボードに元々挿していたATmega328Pを慎重に取り外して、ATP3012R5-PU(小型ロボットの音声)に挿し替えました。これをMacBook ProにつないでArduino IDEを起動して音声が出せるか実験をしていきました。大小様々なつまずきがありましたが、最終的には使えるようになりました。注意点を以下にまとめておきます。
#Arduino IDE(実験時の最新版はver.2.3.4)の起動は、配線を済ませてからの方が良いと思います。

  • スピーカーは、アンプを経由するかアンプ内蔵のものを使う。(YAZAWATVR35WHを使用)
    IchigoJam実験をしたときに作ったケーブルでアンプをつなぎました。電源なしで圧電スピーカーをつないでも動きませんでした。(シリアル通信すらできない感じ)
    →ATP3011系は、GNDとDIGITAL 6番にアンプをつなぎます。ATP3012系はGNDとDIGITAL 9番にアンプをつなぎます。
  • ボードを「Arduino Duemilanove or Diecimila」にする。
    ※動作解説動画では、Arduino UNOが使われていましたが、Diavolinoは、Duemilanoveをベースにして開発されたものなので。
  • ポートを「/dev/cu.usbserial-xxxxx(ターミナルから「ls -l /dev/cu.*」コマンドで接続されているシリアルポートを確認できる)」にする。
  • 「ツール」メニューから「シリアルモニタ」を開く。
    ※ここで、シリアル接続の確認もしてくれるので、とても便利です。
  • 改行コードは「CRのみ」を選択する。
    ※ATP3011/3012は、コマンドの最後に「CR」を送らないと実行しない仕様とのことなので。

実は、USBシリアル変換アダプターモジュールでつないだときに、ポートの設定をしようとしたところでつまずきました。元々Prolific社製のPL2303HXというUSBシリアル変換アダプターモジュールを使っていたのですが、これがMacBook Pro(macOS)からはシリアルポートとして認識されないのです。「ターミナル」を起動させて「ls -l /dev/cu.*」で確認しても、接続前と接続後で何も変わりません。しばらく使っていなかったので、ドライバが古くなっているかもしれないと思い、最新のドライバをインストールしてみましたが、認識されないのは変わりませんでした。新しいmacOSでは使えないのだろうと諦めることにしました。

仕方がないので、FTDI社製の(ド定番の)FT232RLを載せたUSBシリアル変換ケーブル(半分自作)を使うことにしました。これを使うと、シリアルポートが認識されて使えそうな感じになったので、テストのためにいくつかローマ字を打ち込んで音声を出させてみたところ、無事に音声が出てくれました。ということで、macOSではFT232RLのUSBシリアル変換ケーブルを使うことにします。
Linux MIntでは、PL2303HXでも問題なく動作してくれました。Arduino IDEは、レガシーIDE ver.1.8.19、最新版IDE ver.2.3.4の両方で動作確認しました。

試行錯誤しながらいろいろやってみましたが、とりあえず音声が出るところまではできました。配線を変更したり、コマンドでエラーが出てしまったりした場合は、無理に作業を続けようとしないでArduino IDEを終了してから、再度起動してシリアルでの接続が確認されてから作業をすると動作が確実になると思います。一つ一つ、自分がやったことを検証しながら問題を解決して行ったので、いちいち再起動するのは面倒ではありましたが、急がば回れということだと思いました。
#アクエストのオンラインデモのサイトで、日本語をAquesTalk Pico用のローマ字表記にしてもらえるのは地味に便利でした。

【前回記事】
音声合成LSI(ATP3011とATP3012)を使ってみる〜まずは基本的な準備をする

2025年3月16日日曜日

音声合成LSI(ATP3011とATP3012)を使ってみる〜まずは基本的な準備をする

シンセサイザーのように音を作ることができるICや音を増幅させるアンプICなど、音楽や楽器に関わることを電子的にやってみることが楽しくてアレやコレやと手を出している中で、「音声合成LSI」という物があることを知りました。きっと自分がいろいろやっている周辺にはちらほら見えていたのだろうけれど、これまでは無意識にスルーしていて見えなかっただけかもしれませんが、ふと急に気になりだして調べてみることにしました。一度興味をもってしまうと実験してみたくなるのはいつものことですが、値段が手頃だったこともあって早速購入して試用してみることにしました。

今回購入した「音声合成LSI」は、株式会社アクエストが開発しているもので、秋月電子通商で販売されているものを購入しました。簡単な使い方は、公式Webサイトの「音声合成LSI「AquesTalk pico LSI」」で確認することができます。音声合成LSIの「ATP3011」と「ATP3012」のデータシートも公開されているので、以下にリンクを貼っておきます。

簡単に説明すると、アクエスト社で開発された「AquesTalk」という「日本語音声合成エンジン」をMICROCHIPAtmelがMICROCHIPに買収された)のAtmega328に実装したのが「AquesTalk pico LSI」で、同じATmega328を搭載するArduino(動作解説動画ではUNOを使用)のICチップと載せ替えることで簡単に使うことができるようです。

自宅にはArduino Duemilanoveあたりから、その互換ボードを含めて複数のArduinoがあるのですが、実験的に使うことを考えて、だいぶ昔にAE-AtmegaというArduinoの互換ボードを作るための基板(これも秋月電子通商で購入)で組み立てた自作Arduino互換ボードを使って、この互換ボードのATmega328をAquesTalk pico LSIに換装して音を鳴らすことができるかやってみることにしました。


このArduino互換ボードは、秋月電子通商で購入したAE-Atmegaを使って作りましたが、マイコンボードや電子工作を学ぶために、パーツセットではなく基板と必要な部品を購入して、様々なパターンで試作しながらマイコンボードの構造や作り方、それによってできることを学んでいたものの1つです。ベースとなっているのは、アメリカのEvil Mad Scientist(現在はBantam Toolsに買収されています)で開発・販売されていた「Diavolino」というArduino互換機です。2011年に基板だけを購入して、部品を揃えて何枚か作っていました。
#AE-Atmega基板は、Picotec International Co.,Ltdという台湾と中国にある会社で作られているようで、自宅にはまだ数枚在庫がありました。

UNOとDiavolinoでは、世代から考えてもだいぶ違う気がしますが、Arduinoの設計コンセプトとしては同系統だろうと思ったので、多分大丈夫だろうと考えました。ということで、Diavolinoベースの自作Arduino互換ボードのATmega328と音声合成LSIを載せ替えて実験を進めていきたいと思います。ここまでやって、だいぶ長くなってしまいました。しばらくArduinoをいじっていなかったので、自分で作った互換機も使う予定がないくらいにしまい込んでいました。あっちこっち探し回って実験する環境を引っ張り出してきて、どうにかスタート地点に立ったという感じです。近日中に続きを書きますので、しばしお待ちください。

【次回予告】
音声合成LSI(ATP3011とATP3012)を使ってみる〜MacBook Proからコントロールする

2025年3月2日日曜日

Raspberry Pi Zero 2を使ってみる

約10年前に発売されたRaspberry Pi Zero Wの後継機として、Zero 2 Wが数年前に発売されています。Pi Zeroについては、このBlogでも何度か話題にしてきましたが、久しぶりに後継機が出たので何がどう変わったかを確認したくなり、日本での販売開始から少々時間が経ってしまいましたが、購入して使ってみることにしました。既知のことではありますが、USBコネクタが少なく有線LANも使うことができないなど使い道が限られているため、正直なところ私自身はこれまであまり使っていませんでした。今回、Zero 2 Wとの比較をするために、久しぶりにZero Wを出してきてアップデート作業などのメンテナンスを行いました。(Zero無印の方は、IchigoJam Basicで動かしているので今回はパスです)
#今回の後継機発売は、Zero無印はなしでW付だけみたいです。

Zero WとZero 2 Wの共通する仕様は、本体サイズとI/O周りの数と規格です。この辺りは、これまでのZero Wユーザーが使用している周辺機器との接続を考慮して、置き換えがスムーズに行くように配慮されたのではないかと思われます。対応する無線LANの規格も同じですが、Bluetoothは4.1対応から4.2対応になっているようです。その他で仕様が変わったところだけをまとめると以下のようになっています。

〈Zero W〉

  • Broadcom BCM2835(Single core 32 bit SoC…ARM1176JZF-S(ARMv6)1 GHz)
  • 内蔵メモリ512 MB DDR2 SDRAM
  • micro USB電源(5 V/1 A)
  • CSI カメラコネクタ

〈Zero 2 W〉

  • Broadcom BCM2710A1(Quad core 64 bit SoC…Arm Cortex-A53 1 GHz)
  • 内蔵メモリ512 MB LPDDR2
  • micro USB給電(5 V/2.5 A)
  • CSI-2カメラコネクタ

#micro USBとmini HDMIだけでなく、HAT互換40ピンヘッダも共通仕様です。GPUのVideoCore IVも同じようですが、バージョンアップはされているようです。

本音を言うと、USBはUSB-Cの方が便利だし、HDMIもminiではなくmicroの方が扱いやすいしという問題点は感じるところですが、micro USBとmicro HDMIだと挿し間違いが発生しそうだから変更するならUSB-Cとmicro HDMIでお願いしたいところです。

問題提起はさておき、Zero 2 Wのセッティングを進めていくことにします。やることは他のRPiと大きくは変わらず、「Raspberry Pi Imager」を使って起動microSDカードを作るところから始めます。今回は、在庫していた東芝製の16GBのものを使いました。64 bitのRaspberry Pi OSをRecommendされるので、これを使って起動microSDカードを作成し、Zero 2 Wに挿して起動します。RPi 5に比べるとかなりもっさりとした感じですが、これは単にCPUが非力だからなのか、メモリ512MBでは少なすぎるということなのか、microSDカードとの相性問題なのか、諸々の複合的な問題なのかなどなど、はっきりとした原因はわかりません。まぁこんなものだと思って使い方を選んで使うというのが正解だと思います。
#Zero Wの方は、32 bitがRecommendされました。メンテナンスがてら、Zero WのOSも最新の32 bit版(Raspbian GNU/Linux 12 (bookworm))をインストールしました。動作感は、Zero 2 Wとあまり変わらないかな…。

Zero 2 WのRaspberry Pi OSのバージョンを確認するために「$ lsb_release -a」コマンドを実行すると、「Debian GNU/Linux 12 (bookworm)」になっていました。現時点で最新のOSで動かせることがわかりました。とは言え、できることが限られていることを前提にして、実験してみたいソフトだけ追加でインストールしておきました。

〈「Recommended Software」より〉

〈「add / Remove Software」より〉

非力なのでそれなりに時間はかかりましたが、どうにかインストール作業を終えました。Zero Wの方も、32 bit版の同じソフトをインストールして、ほぼ同じことができるように設定をしました。今後の活用を考えて、Zero W/2 Wを他のPCなどからコントロールできるようにするのが実用的なのではないかと考えています。