音声メッセージプレイヤー MyVoice |
1. 概要 2. 準備 3. 音声データの作成 4. メッセージプレイヤーの組み立て 5. プログラムの書き込み 6. 使い方 7. 製作例 (付録1) ADPCMによる音声の圧縮 (付録2) 製作のTips |
短い音声メッセージ(録音音声)を再生できます。複数の音声を登録し、ボタン操作で再生する音声を選択できます。
ArduinoUNO/NANO, Digispark, ATtiny85, ATtiny4313, ATmega328P などで動作します(下表)。
下の写真は、左ボタンを押すと「はい」、右のボタンを押すと「いいえ」の声が出る音声コミュニケーションエイド(VoCA)の例で、ATtiny85を使って作りました。
![]() 音声コミュニケーションエイド(VoCA)の製作例 |
|
MyVoiceのソフトウェアをダウンロードしてください。
ダウンロードしたファイルを解凍し、「myvoice.wsf.txt」のファイル名を「myvoice.wsf」に変更します。ファイル名を変更する際は、エクスプローラの[フォルダオプション][表示]で「登録されている拡張子は表示しない」のチェックをはずしておくことをお勧めします
その他は、「私だけの電子オルゴール」と同様です。
(3) 部品を組み立てて作る場合(マイコンはATtiny85)
書き込み装置(AVRライター)が必要となります。書き込み装置については、こちらのページをご覧ください。
ArduinoIDEを起動し、[ファイル][環境設定]の[追加のボードマネージャのURL]の右端のボタンを押し、
(4) Digisparkの場合
ドライバをダウンロードし、DPinst(32bit Windows用)またはDPinst64(64bit Windows用)をインストールします。その後、ArduinoIDEを起動し、[ファイル][環境設定]の[追加のボードマネージャのURL]の右端のボタンを押し、
Audacityなどのソフトを使い、パソコンで音声を録音し、wavファイルに保存します。その際、サンプリング周波数8000Hz、モノラルとします。スマホで録音したファイルをFFMPEGなどのソフトを使って変換することもできます。
録音した音声は、先頭と末尾の雑音や無音区間を削除したり、音量を調整(Audacityでは[エフェクト][音量と圧縮][ノーマライズ])や、必要に応じて音声区間の短縮(Audacityでは[エフェクト][ピッチとテンポ][テンポの変更])などの加工をしておきます。
はじめに myvoice.wsf をダブルクリックし、音声データファイル(myvoice.h)を初期化します。
音声ファイル(〇〇.wav)を myvoice.wsf にドラッグ&ドロップします。ダイアログボックスが現れるので、中品質か低品質かを選択します。音声データファイルに音声データが記録されます。
引き続き別の音声ファイル(〇〇.wav)を myvoice.wsf にドラッグ&ドロップすると、音声データが音声データファイルに追加されます。記録できる時間は合計で最大1.5秒程度(中品質)または3秒程度(低品質)です。
音声データを変更した場合は、(2)の初期化からやり直します。
スピーカーを接続すれば、すぐに試してみることができます。電源を入れた時にメロディーが1回再生されます。スピーカーの場合は抵抗を直列に入れますが、無くても大丈夫です。
![]() | ![]() |
押しボタンスイッチを接続すると、ボタンを押すとメロディーが再生されます。
![]() | ![]() |
2個の押しボタンスイッチを接続すると、2つのボタンでそれぞれ別の曲を再生できます。(1個の押しボタンスイッチでも「長押し」で曲を選ぶことができます。)
![]() | ![]() |
スピーカーを接続すれば、すぐに試してみることができます。電源を入れた時にメロディーが1回再生されます。スピーカーの場合は抵抗を直列に入れますが、無くても大丈夫です。
![]() | ![]() |
押しボタンスイッチを接続すると、ボタンを押すとメロディーが再生されます。
![]() | ![]() |
2個の押しボタンスイッチを接続すると、2つのボタンでそれぞれ別の曲を再生できます。(1個の押しボタンスイッチでも「長押し」で曲を選ぶことができます。)
![]() | ![]() |
スピーカーを接続すれば、すぐに試してみることができます。電源を入れた時にメロディーが1回再生されます。スピーカーの場合は抵抗を直列に入れますが、無くても大丈夫です。ピアノ音(減衰正弦波)の音を出したい場合は、圧電サウンダではなくスピーカーを接続してください。
![]() | ![]() |
以下は小型のスピーカー(UGSM23A)を接続する様子で、スピーカーのピンをペンチで折り曲げておくと、差すだけでOKです。
![]() |
![]() |
![]() |
押しボタンスイッチを接続すると、ボタンを押すとメロディーが再生されます。
![]() | ![]() |
2個の押しボタンスイッチを接続すると、2つのボタンでそれぞれ別の曲を再生できます。(1個の押しボタンスイッチでも「長押し」で曲を選ぶことができます。)
![]() |
スピーカーを接続すれば、すぐに試してみることができます。電源を入れた時にメロディーが1回再生されます。スピーカーの場合は抵抗を直列に入れますが、無くても大丈夫です。
![]() | ![]() |
押しボタンスイッチを接続すると、ボタンを押すとメロディーが再生されます。
![]() | ![]() |
2個の押しボタンスイッチを接続すると、2つのボタンでそれぞれ別の曲を再生できます。(1個の押しボタンスイッチでも「長押し」で曲を選ぶことができます。)
![]() | ![]() |
スピーカーを接続すれば、すぐに試してみることができます。電源を入れた時にメロディーが1回再生されます。スピーカーの場合は抵抗を直列に入れますが、無くても大丈夫です。
![]() | ![]() |
押しボタンスイッチを接続すると、ボタンを押すとメロディーが再生されます。
![]() | ![]() |
2個の押しボタンスイッチを接続すると、2つのボタンでそれぞれ別の曲を再生できます。(1個の押しボタンスイッチでも「長押し」で曲を選ぶことができます。)
![]() | ![]() |
スピーカーを接続すれば、すぐに試してみることができます。電源を入れた時にメロディーが1回再生されます。スピーカーの場合は抵抗を直列に入れますが、無くても大丈夫です。
![]() | ![]() |
押しボタンスイッチを接続すると、ボタンを押すとメロディーが再生されます。
![]() | ![]() |
2個の押しボタンスイッチを接続すると、2つのボタンでそれぞれ別の曲を再生できます。(1個の押しボタンスイッチでも「長押し」で曲を選ぶことができます。)
![]() | ![]() |
書き込み装置とArduinoIDEの操作については、こちらのページをご覧ください。
※ ATtiny85の場合、メモリ容量は8kBです。この中にプログラムと音声データを格納することになり、記録できる音声メッセージは、中品質で最大1.5秒、低品質で最大3秒程度です。8kBを超えてしまうと次のようなエラーメッセージが現れます。
電源を投入すると、録音メッセージが再生されます。
スイッチをつなぐと、スイッチを押したときに再生されます。再生中にスイッチを押すと停止します。
複数(2つ)の音声を登録した場合、スイッチを「短押し」すると1つ目の音声、「長押し」すると2つ目の音声が再生されます。スイッチを2つ接続すれば、一方のスイッチ(swA)を押すと1つ目の音声、もう一方のスイッチ(swB)を押すと2つ目の音声が再生されます(以下の製作例)。
左のボタンを押すと「はい(mp3)」、右のボタンを押すと「いいえ(mp3)」の録音音声が再生されます。利用者に適した外部スイッチを接続することもでき、障害者の意思表示のツールとして利用できます。
|
![]() 回路図 |
[1] Rodger Richey, Adaptive Differential Pulse Code Modulation using PICmicro Microcontrollers, Microchip Application Note 643, http://ww1.microchip.com/downloads/en/AppNotes/00643b.pdf, 1997.
音声はADPCMという方法で圧縮して記録しています[1]。
myvoice.wsf でwavファイルの音声データを符号化して myvoice.h に記録し、myvoice.ino でこれを読み込み、プログラムと共にATtiny85に書き込んでいます。プログラムはこの符号化されたデータを復号しながら、サンプリング周波数8000Hzでスピーカーに出力しています。
ATtiny45/85, ATtiny2313(A)/4313, ATmega328PなどマイコンICを使って作る場合、4章ではコンデンサを入れていませんが、電池が消耗してきた時などにも安定して動作するよう、以下のようにコンデンサを入れた方がいいです。Arduinoを使う場合はその必要はありません。
スピーカーを使う場合、4章では68Ωの抵抗を直列に入れていますが、とりあえず動作確認をする際は無くても動作します(大きな音がします)。音量を小さくしたい場合は、この値を大きくします。
以下は、ATtiny85用に作った片面プリント基板のレイアウトです。GND端子はもうひとつ付けた方がよかったですね。