fc2ブログ

名張市つつじが丘おもちゃ病院

三重県名張市つつじが丘でおもちゃ病院を開院しています。年中無休で修理は無料、部品代のみ実費です。おもちゃの修理依頼は tutuji@cb4.so-net.ne.jp へメールにてご連絡下さい。なお、宅配便での受け付けは行っておりません。このブログにはおもちゃ等の修理事例やツール製作などを載せていきます。故障診断や修理方法の改善等、ご意見をお寄せ下さい。

WAVファイルからHEXファイルを生成するツールの機能追加(サンプリングレートと量子化ビット数の指定)

【前振り】
PIC電子オルゴールや音声再生のファームウェアで 大容量のフラッシュメモリをサポート したことで、音声データの容量をあまり気にしなくて良くなった。僕のツールを利用していただいている 山口宇部のkohei さんから、音声再生でサンプリングレートを16kspsにすると音質が良くなったとのコメントをいただいて、こちらのツール でもサンプリングレートの指定ができるようにした。ついでに、量子化ビット数も指定できるようにした。

【設計】
サンプリングレートの指定範囲は8000~44100とする。但し、入力のWAVファイルのサンプリングレートと整数比にならない場合は、近しい整数比でサンプルを纏めるので誤差を生じる。

量子化ビット数の指定範囲は7~16とする。入力のWAVファイルの量子化ビット数が指定値より小さい場合はLSBに0のビットを補いビット数を拡張する。指定された量子化ビット数が9ビット以上の場合は、HEXファイルの2バイト分に1つのPCMデータを格納する。格納順序は、HEXファイルの若番アドレスにPCMデータの下位8ビットを格納する。所謂、リトルエンディアンで格納するので、HEXファイルを読み込むアプリケーションでは留意されたい。

上記のようにロジックを追加するだけで、特に設計上のウンチクは無い。

【機能追加後の仕様】
・機能
//①リニアPCM形式WAVファイルからインテルHEXファイルを生成する。
//②WAVファイルのヘッダ情報を見て、自動的に指定されたサンプリングレートと量子化ビット数に変換する。
// ch数は1ch(モノラル)となる。
//③サンプリングレートやch数の変換では複数のサンプルの平均値を出力する。
//④最大のダイナミックレンジになる(量子化ビット数での最小値から最大値まで振らせる)ように加工する。
//⑤複数ファイルを入力し、順に1個のインテルHEXファイルに出力する。
//⑥上記⑤の処理で、入力ファイル毎にorgelの音声データ(SPIフラッシュ)のインデックスを設定するvos_macの
// スクリプトを出力する。
// vos_mac 開始アドレス[バイト],サンプル数 ;WAVファイル名
//⑦64Mバイト分までのHEXファイルが生成可能。
//⑧指定されたサンプリングレートで生成する。但し、入力ファイルのサンプリングレートと整数比でない場合は
// 近しい整数個のサンプルを取り纏めるので、誤差が生じる。
//⑨指定された量子化ビットで生成する。8ビットまでは1バイト、9ビット以上は2バイトに変換する。
// HEXファイルには下位8ビットを先に(若番アドレス)に出力する。

・入力パラメータ(起動パラメータ)
//P1:出力ファイル(インテルHEX)のパス名
//P2:出力ファイル(vos_macスクリプト)のパス名
//P3:入力ファイル(WAVファイルパス名リスト)のパス名
//P4:変換後のサンプリングレート[sps](1000~44100)
//P5:変換後の量子化ビット数(7~16)

【使用例】
・起動バッチファイルの例

..\tool\wav2hex\Release\wav2hex.exe W25Q16.hex vos_mac.txt wavlist.txt 8000 8
pause

・WAVファイルパス名リストの例

sharin.wav
kirakiraomeme.wav
aidorumitai.wav
kyounooshare.wav
egaogasuteki.wav
kirarin.wav

・生成されたインテルHEXファイルの例

:020000040000FA
:100000007B906E8D895995816C985A89A25681870B
:10001000748D72807E877C737C828F6B8188847CF8
:100020006E91826D7D93805D94955E7F917B7687E6
:100030007D777F7F895984B44783956C95648196D9
:10004000638395666CAA617D837F885D9E745F9FE4
        ・
        ・
        ・
:1002500083FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2A
:00000001FF

・生成された vos_macスクリプト の例

vos_mac 0x000000,0x0024de,08000 ;sharin.wav
vos_mac 0x0024de,0x004575,08000 ;kirakiraomeme.wav
vos_mac 0x006a53,0x0019ad,08000 ;aidorumitai.wav
vos_mac 0x008400,0x002cca,08000 ;kyounooshare.wav
vos_mac 0x00b0ca,0x001de2,08000 ;egaogasuteki.wav
vos_mac 0x00ceac,0x0033a5,08000 ;kirarin.wav

vos_macのパラメータは 音声データ開始アドレス、音声データサンプル数、サンプリングレート[sps] となっているので、orgel以外への応用の場合にはこの値を参考にして欲しい。

【使い方のヒント】
①このツールは、入力されたWAVファイルのデータの最大値と最小値を調べて、ダイナミックレンジが最大となるようにデータを加工する。その計算誤差が少なくなるように、入力ファイルの量子化ビット数は落とさないで、このツールに入力するのがよい。

②WAVファイルのサンプリングレートと変換後のサンプリングレートが異なる場合は複数のPCMデータを1つに纏めることにより変換後のサンプリングレートに変換する。そのため、サンプリングレートが整数比でない場合は変換誤差が生じる。これを避けるためには、整数比になるように事前にWAVファイルのサンプリングレートを(出回っているツールを使って)変更しておくとよい。

【開発環境】
VisualuStudio2008Express

【ダウンロード】
設計資料と開発プロジェクトは ここから ダウンロードできるPIC電子オルゴールの公開ファイルに含まれている。

ツールはディレクトリ「tool」に入っている。

プロジェクトのソリューションファイルは下記にある。
tool\wav2hex\wav2hex.sln

使用例は下記にある。
「voice_Mirrorna」と「voice_MICdeWAN」にある。
バッチファイルは wav2hex.bat
WAVファイルパスリストファイルは wavlist.txt
生成されたHEXファイルは W25Q64.hex
生成されたvos_macスクリプトは vos_mac.txt
関連記事
スポンサーサイト



  1. 2019/11/25(月) 14:17:00|
  2. 電子オルゴール+音声再生
  3. | コメント:5
<<tiny13AのBOD解除のコード | ホーム | tiny13Aで音声再生>>

コメント

人気キャラクターの音源も SPI音声データに変換

人気キャラクターなどの音源も、このツールで SPI音声再生できるので、大変重宝しております。
2021年も、お世話になります。
今回は、「おしゃべり目覚まし」に応用しましたので報告します。(URL参照)
https://blog.canpan.info/charts/archive/334
某アミューズメント・パークのキャラクター音源です。
  1. 2021/08/08(日) 18:44:08 |
  2. URL |
  3. ToyDr.わたなべ #9q2FTWbs
  4. [ 編集 ]

2020新曲は音声再生でも

本年もよろしくお願いいたします。
糸魚川市の5時のチャイムは季節ごとに4曲あり、これを音声再生データにしてみました。
また、オルゴール演奏の新曲データを2曲と、更新曲データも同梱して、当方ヤフーBOXにて公開します。
昨年末のフルート演奏と共にご視聴あれ。
ダウンロードは、おもちゃ修理「電子カルテ」から。
(2020/1/21 サイズを抑えるため、差分ファイルのみを2分割しました。)
https://blog.canpan.info/charts/archive/260
  1. 2020/01/09(木) 01:01:02 |
  2. URL |
  3. ToyDr.わたなべ #9q2FTWbs
  4. [ 編集 ]

演奏者の息づかいまで聴こえるようで、音質的には大満足です。

新生「wav2hex.exe」の音声再生を試聴するため、フルート演奏をwavサンプリングしたものをhex変換して当方の公開フォルダ(下記URL)にて公開します。
入力WAVファイルのサンプリングレートは、32000モノラルで、これを新生ツールで8000に(量子化ビット数は今回、8ビットで)変換しました。

スローテンポでフルコーラス演奏なので、どの程度が収納できるかな、と。。。
フルコーラス演奏でも、W25Q16に2曲、同32に3曲、同64には5曲が収納できました。
演奏者の息づかいまで聴こえるような臨場感が味わえました!
(フルート演奏をSPIフラッシュで音声再生するモデル、※2020/9/14 リンク先更新)
https://drive.google.com/file/d/14WqGyY8oVbSPTMrvDowf2LmfJpFy88Ir/view?usp=sharing
  1. 2019/12/04(水) 21:51:06 |
  2. URL |
  3. ToyDr.わたなべ #9q2FTWbs
  4. [ 編集 ]

Re: 相変わらず仕事が早いですね~!

ついでに量子化ビット数も指定できるようにしましたので、16ビットでやりましょう。12F1572は@66円でしたよ。
  1. 2019/11/25(月) 21:22:53 |
  2. URL |
  3. 大泉茂幸 #-
  4. [ 編集 ]

相変わらず仕事が早いですね~!

毎度お騒がせしております、宇部おもちゃ病院の村上です。

再生しようとしてた音源は3部合唱で、8kHzに落したwavをパソコンのイヤホンで聞くと、合唱には聞こえるものの、3人のメロディーの分離がクリアでなく、もやっとした感じになりました。
24kHzだと、ばっちりクリア。16kHzでもそこそこでした。(近々完了しそうなので、完了したらブログにアップします。)

ただのセリフや効果音だと、あまり差がないかもしれません。曲をリアルに再生したいときだけでいいかも。
皆様、目的によって使い分けて下さいませ。

なお、大泉さんとのメールには書きましたが、分解能が8bitになって、おもちゃの貧相なスピーカで再生しても、耳で分かるほど違いがあるかどうかは、未確認です。
  1. 2019/11/25(月) 19:04:39 |
  2. URL |
  3. kohei #mQop/nM.
  4. [ 編集 ]

コメントの投稿


管理者にだけ表示を許可する

プロフィール

大泉茂幸

Author:大泉茂幸
名張市つつじが丘おもちゃ病院
名張市つつじが丘南3番町129番地
mailto:tutuji@cb4.so-net.ne.jp

子どもの頃から趣味は電子工作一筋でやってきました。理科離れが進む中で科学技術に興味を持つ子どもが少しでも増えて行くことを願って、子ども達に電子工作の活動の場を提供しています。

1981年からおもちゃ病院の活動を始め、2014年に三重県名張市への移住を機に「つつじが丘おもちゃ病院」を開院しました。自分でおもちゃを設計し製作する【おもちゃ工房】と、マイコンを応用した電子工作を楽しむ【マイコンクラブ】も併設しています。新規参加メンバーを募集しています。

当ブログで公開している技術情報や成果物の複製、改変および再配布はフリーです。読者様のおもちゃ病院活動のお役に立てば幸いです。ご利用いただいた結果や感想等を記事へのコメントやメールでフィードバックしていただけると有難いです。なお、公開ファイルは最新版を載せているので、古い記事の内容から変わっている場合があります。

公開しているファームウェアについては 目次ページ か 全国のおもちゃ病院様での使用実績 をご覧下さい。


当ブログへのリンクはフリーです。

カテゴリ

おもちゃ修理技術 (302)
¦ ・電子オルゴール+音声再生 (123)
¦ ・音声再生・録音再生 (39)
¦ ・2.4GHzラジコン (92)
¦ ・レガシーラジコン (31)
¦ ・赤外線リモコン (5)
¦ ・タッチセンス (8)
¦ ・RFID (4)
ツール製作 (58)
¦ ・プログラマー (47)
¦ ・USB-シリアル変換 (5)
¦ ・その他のツール (6)
修理事例 (279)
¦ ・マイコン換装 (121)
¦ ・電子・電気修理 (114)
¦ ・メカ修理 (44)
製作記事 (20)
PIC開発 (15)
AVR開発 (5)
LPC開発 (3)
STM開発 (2)
R8C開発 (6)
CH32V開発 (13)
おもちゃ病院 (12)
ドクター研修会 (8)
未分類 (0)

最新記事

最新コメント

月別アーカイブ

訪問者数

検索フォーム

RSSリンクの表示

リンク

このブログをリンクに追加する

QRコード

QR