手習ひデジタル信号処理(20) 母音音声合成器その5、合成された音を聞く

Joseph Halfmoon

前回、STM32F446REに書き込んだ母音音声合成器の出力波形を、スペクトログラムなどを使って「見て」みました。しかしね、なんです、音なのでこの耳で聞かねば。ということで今回は出力信号の先に大分前に組み立ててあった秋月製のスピーカアンプを接続、「聞いて」みましたぞ。実際の音声ファイルもありです。

“手習ひデジタル信号処理(20) 母音音声合成器その5、合成された音を聞く” の続きを読む

手習ひデジタル信号処理(19) 母音音声合成器その4、STM32F446上実装を「見る」

aiueo_spc4
Joseph Halfmoon

前回まで3回にわたって母音音声合成器の「部品」3つの特性をScilabに計算してもらって眺めてきました。ようやく今回はSTM32F446上で動作確認であります。といっても三上先生のサンプルプログラムそのままなので動かない分けがないです。今回は「発声」された信号をよく「見て」みようの回。

“手習ひデジタル信号処理(19) 母音音声合成器その4、STM32F446上実装を「見る」” の続きを読む

手習ひデジタル信号処理(18) 母音音声合成器その3、高域強調器(Radiator)

Radiator
Joseph Halfmoon

一度道筋がついてしまえば、以下同文方式。Scilab使って特性を調べるのは簡単に思えてきました(本当か?)ターゲットは『母音音声合成器』第3の要素「高域強調器」であります。こいつは「口からの放射」に対応とのこと。手習ひさせていただいております教科書どおりの特性が計算できればOKっと。

“手習ひデジタル信号処理(18) 母音音声合成器その3、高域強調器(Radiator)” の続きを読む

手習ひデジタル信号処理(17) 母音音声合成器その2、共振器(Resonator)

ResonatorMagBode
Joseph Halfmoon

前回に引き続き、課題『母音の音声合成器』を手習ひしてまいりたいと思います。今回は「声道に対応する共振器」であります。今回もマイコン上での実習はお休みで、Scilab使って共振器の特性を調べてみたいと思います。Scilab使ってとは言うものの、Scilab素人の私には過ぎたる野望か。

“手習ひデジタル信号処理(17) 母音音声合成器その2、共振器(Resonator)” の続きを読む

手習ひデジタル信号処理(16) 母音音声合成器その1、Rosenberg波

RosenbergSAMPLE
Joseph Halfmoon

三上直樹先生著、工学社『「Armマイコン」プログラムで学ぶデジタル信号処理』を勝手に手習ひさせていただいておりますが、今回ついに「応用編」に突入。最初の課題は母音の音声合成器ぞなもし。多少は背景知識も取得すべく、今回はマイコン上での実習は無し。代わりにScilab使って波形を観察してみます。 “手習ひデジタル信号処理(16) 母音音声合成器その1、Rosenberg波” の続きを読む

手習ひデジタル信号処理(15) STM32F446、IIRフィルタその4、継続型Class

FAIL_Bode
Joseph Halfmoon

前回と今回は算法的にはまったく同じ、その差はソフトウエア部品として使い易いようにクラス化するところだけ。だったら簡単じゃん、と甘くみて例のごとくにハマりました。クラス化する「エレガントな」書き方を学ぶべく、1行1行手入力したら間違えてました。ボーっとして入力しているからだ。

“手習ひデジタル信号処理(15) STM32F446、IIRフィルタその4、継続型Class” の続きを読む

手習ひデジタル信号処理(14) STM32F446、IIRフィルタその3、継続型

IIRdut
Joseph Halfmoon

前回は同じ構成のIIRフィルタの計算をFloat型からDouble型にするだけで問題が消える件を勉強しました。今回はFloat型のままでOKという話。だったら最初から言ってよ、とは言わず、一歩一歩手習ひいたしとうございます。なぜOKになるのか、ブロックダイアグラムを見ればどこが違うかは分かりまする。でも何故?

“手習ひデジタル信号処理(14) STM32F446、IIRフィルタその3、継続型” の続きを読む

手習ひデジタル信号処理(13) STM32F446、IIRフィルタその2、Double型

DoubleBode
Joseph Halfmoon

前回は、IIRフィルタを単精度浮動小数(Float型)で動かして、「予定通り」計算精度の問題を目にすることができました。今回は、同じIIRフィルタを倍精度浮動小数(Double型)での計算に変更するだけで、その問題が消える件をしみじみ味わってみたいと思います。予定通りとは言え、前回結果と比べると魔法のよう。 “手習ひデジタル信号処理(13) STM32F446、IIRフィルタその2、Double型” の続きを読む

手習ひデジタル信号処理(12) STM32F446、IIRフィルタその1、Float型

IIRdirBLK
Joseph Halfmoon

今回から、IIRフィルタに入ります。前回までのFIRフィルタに比べると、計算負荷(あるいは回路規模)は小さくなるけれども、「いろいろ」あって難しい、と。ちょっと上級生になった感じで嬉しいです。まずは、基本形を出発点に、さっそく計算精度の問題の一端を垣間見ることになるみたいです。浮動小数点処理でもグラグラするのね。

“手習ひデジタル信号処理(12) STM32F446、IIRフィルタその1、Float型” の続きを読む

手習ひデジタル信号処理(11) STM32F446、FIRフィルタその3,直接形Class

FirDirclassEC
Joseph Halfmoon

前回前々回とFIRフィルタで特性も同じ。しかしフィルタを構成する形は異なりました。しかし今回は前々回と形も同じ。違うのはソースコードの書き方のみ。折角のC++のコンパイラだし、「クラス」を使わずにはいられないっと。「テンプレート」もね。確かに見通しよくなるけれど、年寄りはC++には染みついた抵抗がある。 “手習ひデジタル信号処理(11) STM32F446、FIRフィルタその3,直接形Class” の続きを読む

手習ひデジタル信号処理(10) STM32F446、FIRフィルタその2、転置形

FIR_filter_transposed_BlockDiagram
Joseph Halfmoon

前回はFIRフィルタ「直接形」ということでその結果にちょっと感動。今回は同じことを「転置形」でやれ、との思し召しです。いくら感動の結果でも同じ筈。「カッタリ~」などと不埒な事を言っていては修行になりませんぞ(手習ひか。)前回のプログラムを書きなおし、F446に書き込んで実験いたしました。まあ、結果は変わらんケド。

“手習ひデジタル信号処理(10) STM32F446、FIRフィルタその2、転置形” の続きを読む

手習ひデジタル信号処理(9) STM32F446、FIRフィルタその1、直接形

FIR1_BodeEC
Joseph Halfmoon

今回からいよいよデジタル信号処理らしい「手習ひ」に入れます。その最初はFIRフィルタです。まずは素直な「直接形」の実装でその威力をシミジミ味わえ、という感じでありましょう。アイキャッチ画像に振幅特性を示しましたが、いい感じじゃないでしょうか。こちらは書いてあるとおりにやっただけなのですが、ちょっと感動。

“手習ひデジタル信号処理(9) STM32F446、FIRフィルタその1、直接形” の続きを読む

手習いデジタル信号処理(8) STM32F446、巡回型移動平均3/3

STM32F446_DUT
Joseph Halfmoon

前回から引き続きの「巡回型移動平均」今回の3回目で完了であります。目出度い、ようやく次回はFIRフィルタに進めます。しかし、3回目、見た目は前回とほとんど同じ画像ばかり。2回目と3回目、唯一の変化は、積分を浮動小数点で計算するか整数で計算するかの違いのみ。信号処理的には「大きな一歩」に思えますが、見た目は同じ。 “手習いデジタル信号処理(8) STM32F446、巡回型移動平均3/3” の続きを読む

手習ひデジタル信号処理(7) STM32F446、巡回型移動平均2/3

MOVING_AVG2_MOD_BlockDiagram
Joseph Halfmoon

前回から引き続きの「巡回型移動平均」の2回目は、「巡回型に潜む魔物」を「かいまみる」予定でした。しかし魔物の召喚に失敗した模様。フツーに動いてしまいました。これではいけない、と無理やり魔物を登場させてみましたが、本当に無理やり、何やっているの?という感じ。こういう意外な挙動も「巡回型」?

“手習ひデジタル信号処理(7) STM32F446、巡回型移動平均2/3” の続きを読む