iPhoneのマイクで拾った音(モールス信号音)を解析して文字列に変換します。速度や音圧のしきい値は自動で調整します。
当初はiPhoneのUVメーター機能を使って復調していましたが、UVメーター機能では
振幅が実際の音に対しての追従が遅くて閾値を工夫しても 相当遅いモールス信号がやっと復調出来る程度の精度でした、
開発着手当初からFFT(高速フーリエ変換)が使えないかというアイデアがあったのですが
高速変換とはいえ 複雑な演算なので実装したときにどの程度のレスポンスが得られるかが懸念事項でした。
ところが、プロトタイプで実験してみると 思っていたよりかなり高精度なレスポンスが得られることが判明、
そこでVer.1.3 でFFTを使った解析エンジンを実装し正式にintelli-MorseをReleaseしました。
これ以降はモールス練習アプリからむしろモールス信号解析アプリといった志向が強くなってきました。
コード解析に関してはモールスコードのフォーマットに正しく発音できるシュミレーター
での解析精度は概ね80〜90%程の精度が出ます。
一方、手打ちでは正しくフォーマットに準拠していなくても人の耳では聞き取れるものなので
これに対応出来るように解析アルゴリズムを工夫しています。完全とは言い切れませんがかなり精度がアップしています。
今後もアイデアを思いつけば実装して試験を繰り返し製品に反映していきます。(秘密のアルゴリズム・・・!)
知り合いのアマチュア無線局長さんから「録音して解析する機能があるといいなぁ」とのリクエスト・・で、
録音解析機能を実装しVer2としてリリース!
ポータル(通常)画面
バーグラフ表示
ポータルな表示です。
Sound Selectでカーソルを使って対象の音を
選定するときはこのグラフを使用します。
Sound Select Dialogで選択度の切替えが出来ます。
グラフ非表示
ウォーターフォール表示
縦方向に滝の様に流れ音の強さで色が変化します。
ある程度の速度までモールス信号の様子が目視
出来ます。
バーグラフに比べてCPUリソース消費が大きいので
解析性能に影響する場合があります。
CPUのリソース消費が気になる場合グラフ表示をOFFにして解析に注力したい場合
またバッテリー消費も抑えることが出来ます。
表示切り替えは2種類
1.FFTモニターにタッチすると切り替えダイアログが表示されるので
ダイアログから選択する事が出来ます。
ボタンで表示モードを選択すると
自動的にフェードアウトします。
2.FFTモニターをスワイプして切り替える事が出来ます。
1)右スワイプ → バーグラフ表示
2)左スワイプ → ウォーターフォール表示
3)上スワイプ → グラフ非表示(Display OFF)
②▶
◀(2-2)
◀(2-1)
NOTE
Realtime Modeは最初に入ってきた信号が短点か長点か
判別が付きませんので、信号の長さが50msを堺に仮に判定しています。
したがって、場合によって”E”を”T”のように誤解釈する場合があります。
一方、BufferdModeは一旦信号のON/OFF時間をデータとして蓄えて
無音信号時間が300msになると
それまでに蓄えたON/OFF信号時間を分析して解析しますので、
先頭の文字も判断しやすい特徴があります。
② アナライズモード、Bluetooth有効/無効 表示
モード切替時はモード名称を表示し解析中は状況を表示します。
(モールス信号解析方法は2種類ありそれぞれで表示が異なります。)
Real Time Analyze Mode(受信音を即時変換します。)
→ 受信音が短点か長点かモールス音を可視化します。
Bufferd Analyze Mode(信号音のON/OFFデータを蓄積した後解析します)
→ 蓄積状況(蓄積データ量)の数値を表示します。
Analyze Modeは(2-1)[Setting] ボタンで、
(2-2)[Analyze Mode Selecter] Dialogを開いて切り替えます。
それぞれのModeボタンを押すとモードが切り替わり
自動的にDialogは閉じます。
③▶
④▶
⑤▶
⑦▶
◀⑥
③ モールス変換モニター表示
解析された文字(文字列)を表示します。
④ 文字列テキストボックス
解析された文字列を行単位で表示します。
最新の文字列が最下に表示され自動的にスクロールします。
⑤ モールス信号速度表示
解析した文字列からwpm表示します。
PARIS wpmの速度を基に算出しています。
⑥ 「Clear」「Copy」「invalid」/「Valid」ボタン
「Clear」文字列テキストボックスの文字列を全消去とともに
モールス変換モニター、Bufferd Modeの蓄積データも初期化します。
「Copy」文字列をコピーしますので別のアプリにペースト出来ます。
Bluetooth 無効
Bluetooth 有効
Bluetoothのデバイスによってはスピーカーでハウリングが発生したり
本体側のマイクロホンが使えなく成るためAnalyzerではBluetoothのON/OFFが
単独に設定できます。この設定はAutoKeyer、ManualKeyerでは無効です。
⑦ 自動調整状況表示(Auto Tuning Status)
Soound Select (音域中の解析対象ポイント)の状況を表示します。
Analyzer OFF
「Analyze」ボタンで解析をOFFにした場合や
機能を切り替えたときに自動的に解析がOFFになった時の表示です。
[Sound Select AUTO ON] (自動検出)
in Waiting..
解析中に信号が切れて(信号レベルがしきい値以下になっている時間が2秒以上経過した時)
信号待ちを示す表示です。
Get Signal..
Sound Select がAUTOのときにしきい値を超える信号を検出した事を表示します。
Lock ON.
Get Signalのときにタッチすると解析対象ポイントを
ロックし信号が途切れてもin Waitingにはなりません
ロック中に押すとin Waitingに成ります。
in Waitingに成っても閾値を超えるとすぐさま
Get Signalに成るので見えない事もあります。
Free Select Mode
[Sound Select AUTO OFF] (手動設定)
Sound SelectでAUTOを解除すると手動で解析対象を選択出来ます。この状態を表示します。
⑧▶
Sound Select カーソル
[Sound Select] サウンドセレクト
手動時
自動時
Sound Select スライダー
⑧ 自動調整機能表示
音域中の解析対象ポイント、音圧しきい値、モールス速度の自動調整機能
Sound Selectはマイクで拾った音の音域から、どの音を解析の対象とするかを選択する機能で 自動(Auto)では最初の閾値を超えた一番強い音を自動的に対象としますが、ゲームやサンプル音など様々なケースでは周囲の音の方がモールス音より強い場合など自動検出が困難な場合に
手動で任意の音に合わせるための機能です。
Sound Select ボタンにタッチすると自動的に AutoがOFFに成り
グラフもバーグラフになります。
スライダーを左右に移動するとバーグラフ上のカーソルが連動し信号音を選択することが出来るようになりますので、モールス音に連動している信号に合わせばその信号が解析の対象になります、さらに細かい移動は左右の”<”、”>”ボタンで微調整することが出来ます。
手動で選択している時はステータスバーが”Free Select Mode”の表示に成ります。
選択終了後は[Close]ボタンでダイアログを閉じてください。
任意の選択位置はMemoryに最大5箇所記憶することが出来ます。
予めMemory番号を選択して位置を決めたらSaveボタンで記憶します。
また[○ Auto]を押すと自動モードに移行しダイアログが閉じます。
SelectivityはFFTのグラフの選択度を変えることが出来ます。
Finely:詳細 細かい選択が出来ますがCPU負荷も増大します。
Middle:普通 中間程度の選択度です。
Rough:大まか 解析度が落ちますがCPU負荷が少なくなります。
Finely
Middle
Rough
Sound Adjust Dialog
手動時
自動時
手動時
自動時
BufferMode時のDialog
BufferModeではDot Timeの計測は解析処理の中で
自動的に行われます。
Autoボタン、手動設定はありません。(Auto固定)
[Sound Level] サウンドレベル
Sound Level Dialog
[Speed Adjust] スピードアジャスト
Sound Levelは信号ON/OFFのしきい値を決める機能です。
ON/OFF時間で短点/長点を区別するため、しきい値の設定値は
信号レスポンスに大きく影響します。
しかし、信号はノイズの中に埋もれる傾向にあるため信号受信中は常に微調整が必要になります。
[○ Auto]にするとピークレベルに対し自動的に適正値を算出し
追従します。
また、対象信号周囲の音圧レベルを監視し対象信号のON/OFFを正確に読み取るように工夫しています。
Sound Level ボタンにタッチすると自動的に AutoがOFFに成ります。
このDialogでは”Waiting threshold”も設定出来ます。
信号待ち(in Waiting..)から(Get Signal..)に変わる起点の
信号レベルのしきい値を設定します。
Speed Adjustは短点(Dot Time)の長さを基にした速度調整です。
短点の基準ON時間を設定します。
[○ Auto]にすると自動的に適正値を算出し追従します。
モールスの文字速度はモールスコードが固定長ではないので
文字によって速度が異なっています。
そのため基準として”PARIS”文字列を1分間に何度送れるかを
目安としたPARIS WPMがあります。
また長点は短点の3個分という規格もありPARIS文字列から
短点の長さを基準として文字速度を算出し表記する事が出来ます。
但し、これはあくまで機械的な話で実際人が打つ場合
長点は短点の何倍といった操作は無理な要求です。
したがってWPM自身が目安になります。
Ver2.でMeasurement interval(ms)を追加しました。
信号のON/OFFを検知する間隔を切り替える事が出来るように
成りました、解析が難しい高速モールスを解析したいときに
数値を下げると精度が上がりますがCPU負荷も大きくなります。
また低速モールスの解析が不安定な場合数値を大きくすると
安定する事が有ります。
Speed Adjustボタンにタッチすると自動的に AutoがOFFに成ります。
⑪▶
⑨▶
▲
⑫
◀⑩
⑨ 解析対象の入力音圧表示、解析中の短点(Dot Time)の表示
inputには解析対象ポイントの音圧としきい値を表示します。
解析対象が未定のときは−−.−[dB]と表示します。
同様にDot Time は設定基準値を表示します。
待機中の基準値はSound LevelのDialogで設定します。
⑪「Menu」ボタン
Top Menu(起動時の機能選択画面)に移行します。
⑩ 「Analyze」ボタン
アナライズ(解析)を一時停止したり再開するボタンです。
停止中はボタンがグレー色になりステータス表示が”Analyze OFF”に成ります
Recorder Function(録音機能)を起動したりFaile Tableを表示した場合
も一時停止します。
⑫「Sleep」ボタン
アプリ使用中にiPhoneが自動的にSleep(休眠)に成らない様にします。
表示が”NO Sleep”に切り替わります。画面を切り替えたりアプリを終了すると
この機能は解除されます。
注意:エネルギーの消費が多くなるのでバッテリー切れに注意してください。
⑬▶
File Table 画面
タッチ毎に切り替わります。
Renameの時、ファイルを選択すると
File name Editに移行します。
⑭▶
Edit 画面
ファイル機能
録音したデータファイルを操作する機能です
⑭「Select」/「Rename」
押す毎に切り替わり、ファイル名を選択したあとの機能が異なります。
「Select」はPlayerで再生するファイルを指定します。
「Rename」はファイル名を変更する操作に移行します。
変更ファイル名が既に存在している場合は書き換わりません
“Rename Error same name already exists.”と表示が出ますので
別のファイル名に変更してください。
注意:ファイル名にはスペースを使用しないでください。(文字化け)
「Sorting」並び替え
ファイル名をASCII順に押す度に昇順/降順に並び替えます。
「Edit」ファイルの消去 → Edit画面
ファイル単位で消去する事が出来ます。
「Edit」にタッチしEdit画面にすると「Done」に変わります。
ファイルを選択(赤いマイナスにタッチ)すると
「Delete」が表示されますのでタッチするとファイルを消去します。
削除操作終了は「Done」にタッチすると元の画面に戻ります。
NOTE
ファイル名に使用できる文字はアルファベットの他
漢字、絵文字も使用出来ます。
再生解析機能
Recorderで録音したPCMデジタルデータを再生し文字列に解析します。
再生時は速度、音圧を変更することも出来ます。
Player Dialog
再生ファルが設定されていない状態ではPlayer:(nill)の表示になっています。最初に「File Table」からファイルを選択してください、
⑬ 録音解析機能
PCMデジタルデータ録音機能
解析対象を一旦録音して音圧や速度を変えて再生し解析する機能です。
従来は一変通り終了してしまうと解析できませんでしたが、
この機能を使うことで更に強力な解析が出来ます。
またデータを保管し改めて聞くことで自分の耳による解析練習にも使えます。
録音データはPCMデータ(デジタル)なので劣化がありません。
解析もデジタルデータを解析します。
Sound Booster 音圧ブースター
音の大きさを変えることが出来ます。
ノイズ部分も拡大するため波形の山が
若干平坦に変化します。
Playback Speed 再生速度調整
±20%ほど変化します。
「Normal Speed」ボタンで標準速度に戻ります。
遅すぎると解析に迷う傾向があります。
繰り返して再生しても文字列が安定しないときは
速度を早めると安定する場合が有ります。
Auto Repeat スイッチ
ONでエンドレスに繰り返し再生します。
「Play」 再生ボタン
再生を開始するとDialogも閉じます。
再生はエンドレスに繰り返されます。
「Stop」 停止ボタン
再生を停止しDaialogを閉じます。
終了処理のためDialogが閉じるまでに
若干時間がかかります。
「Close」 Dialogを閉じます。
再生中押すと停止しDialogを閉じます。
Recording Dialog(待機中)
Recording Dialog(録音中)
⑮ デジタル録音機能
マイク入力をPCMデジタルデータに変換して記憶します。
「Recording」 録音開始ボタン
録音中押すと停止します。
「Stop」 停止ボタン
試し再生中も停止します。
「Trial listen」 試し再生ボタン
この再生には解析はありません。
「Close」 Dialogを閉じます。
録音中押すと停止しDialogを閉じます。
録音されたデータは自動的に録音日時の
情報でファイル名が生成されます。
例 2022年5月25日 15時45分24秒 の場合
“220625_15:45:24”になります。
録音が終了するとPlayerの対象ファイルとして
自動的に設定されます。
◀⑮
①▶
① FFTモニター
マイク入力された音声信号をFFT解析し音域
(左側が低い音で右に行くほど高い音)グラフとして表示します。
グラフはバーグラフ表示とウォーターフォールの2種類が選択できます。