Category ham.

今まで、トランス2個とボリュームと少々の部品だけのインターフェイスで、VOX でデジタル運用していたが、音声もデジタル用の入力から入れようと思いはじめた。

というのも、マイク入力からだとデジタル入力からよりも、無線機内部での入力の増幅率が高くSN が悪化するのと、音声を一旦 PC に入れてDSPをかけて出力する際、デジタルモード用のインターフェイスに出力するほうが接続が楽になるからだ。

そういうことをしようとすると、VOX ではなく PTT をスイッチにして明確に切替えたくなるので、デジタルモードのPTT制御も含めてちゃんと作った。

USB シリアルモジュールの RTS を PTT 出力として使い (他は全く使わない)、手動PTTもRTSを手動で制御するようにした。その後にフォトカプラを入れ、PC側とは絶縁している。

また、この機会に入りこむノイズをできるだけ減らそうということで、USB 延長ケーブルを使って、USB オーディオデバイスの位置を延長し、無線機用のインターフェイスを5cm程度の極短いケーブルに変えた。これでブーンという音が入りこむのを抑えることができた。

あと、トランスの入出力にもフェライトビーズ(チップインダクタ)を入れて、送信時の回り込み対策を強化しておいた。

残念ながら、リグの内部雑音が結構あるみたいで、無音(マイクショート)しても送信状態にするとホワイトノイズが少々送信される (PWR メータは全く振れないが、近くの別の無線機で最大感度に設定すると十分聞きとれるレベル)

あと、シリアル通信か、オーディオインターフェイス由来かわからないが、USB か何かから少し高めの音のノイズが規則的に入るのが気になるが対策できていない。ノイズ対策は難しい。

  1. トップ
  2. ham
  3. デジタルモード用インターフェイスの改良

スピーチプロセッサ

マイク入力の音質を改善したいという場合がときどきあるかもしれない。例えば

  • 環境ノイズを減らしたい
  • 聞きやすいように音量をある程度一定に保ちたい

とか。

アナログでやろうとすると割と高価な機材が必要だが、現代はDSPでなんとでもなる。

AU Lab

Mac には標準で AU (Audio Units) という機能があり、簡単なフィルタとかはこれでできる。AU はプラグインとなっており、使うためにはアプリケーションが必要。標準アプリケーションだと Garage Band で使えるが、AU だけ使いたいのに Garage Band というのは重すぎるしめんどうくさい。

しかし、実は Apple はAU Labというソフトウェアを提供しており、標準添付ではないのだが、これをインストールすると入力を AU を通して別のデバイスに出力というのが簡単にできる。

AUDynamicsProcessor

エクスパンダないしノイズゲート・コンプレッサないしピークリミッタ相当のことをできる。

グラフ中の下側の点2つを動かすことでレベルが低い環境雑音の音量を下げる(ないし完全カット)することができる。リアルタイムにグラフのどの状態にあるかも表示されるのでとても設定しやすい

上の点2つを動かすとコンプレッサをかけることができる。入力が低すぎる場合 Master Gain をあげる。Master Gain をあげつつコンプレッサがかかる閾値を下げると常にコンプレッサがかかり出力を一定の状態にできる。

AUMultibandCompressor

4つにわけられた帯域ごと(帯域幅は任意に変更できる)にコンプレッサレベルを変えて設定できる。設定帯域ごとのイコライザ相当の機能もついてる。エクスパンダ的機能はついていない。

高域の上限を下げたりすれば、サ行のうるささが軽減される (ディエッサーとして使える)。

イコライザ

  • AUFilter
  • AUGraphicEQ

他のでもできるが、このあたりを使うのがわかりやすい。ただ、イコライザはベストを見つけるのは非常に難しい。永遠に時間がかかるしだんだんゲシュタルト崩壊してくる。

自分の上げたい/下げたい周波数帯域が、聴きながらわからない場合、AUParametricEQ を入れると、特定帯域幅だけドラッグしつつ上げたり下げたりできる。目的周波数をさがすだけなら AUGraphicEQ より楽。

その他

少しだけリバーブをかけると聞きやすくなるらしいんだけど、AUMatrixReverb は設定が難しく、少しでもかけすぎると気持ち悪い感じになるので、素人は手を出さないほうが良さそう。

他のアプリケーションの入力にする

AU Lab で、入力 → AU → 出力はできるのだが、出力を別のアプリケーションの入力として使いたい場合、これだけではできない。

要は一旦出力したものを、別の入力に入れればいいのだが、ハードでやると (すなわちケーブルをループバックさせる感じになる) ノイズ的に不利だし、接続が煩雑になる。

Sound Flower

ソフトウェアとしては Sound Flower というのが良く使われている。これは Mac 上で仮想オーディオデバイスとして働くもの。しかし Yosemite ではクリッピングノイズのようなもの (プチプチ音) が発生することがあり、この問題は未だ解決していない。どうしても気になる場合ハードに一度デジタルで出してしまうのが確実そう。

ノート:音声通信用にスピーチプロセッサについて考える

もともとアマチュア無線の音声通信の了解度を、何らかの手軽な方法で上げられないかと考えて調べたはじめた。

アマチュア無線で、特にSSBという変調方法の場合、声の大きさがそのまま送信パワーになる (無音時 0W・最大で設定した出力電力)。なので、昨今の SSB 無線機には必ずスピーチプロセッサというのがついている。

スピーチプロセッサは何をしているか? というと、基本はただのコンプレッサーで、音声のダイナミックレンジを圧縮している。小さい声も大きい声もできるだけ一定の大きさに保たれるようにして、平均送信電力を上げている。

凝った人は、このスピーチプロセッサ部分を無線機組み込みではなく、外部でやってより自由に調整するらしい。特にSSBで凝ったことをやってる人場合、Hi-Fi SSB とか言ってるらしい。

アマチュア無線では占有周波数帯域幅を抑えるため、上限 3kHz 程度までで音声周波数をカットして送信 (SSBの場合、音声の帯域幅≒占有周波数帯域幅) しているので、Hi-Fi とはいっても、原音に忠実という本来の意味ではなく、了解度の向上(相手が聞きとりやすいこと・複数人同時送信されていても、耳につきやすいこと)を目指しているようだ (周波数帯域的に原音忠実というのは不可能)

(ちなみにAM中波放送の場合、音声信号は上限約10kHz程度の帯域、FM短波放送の場合約15kHz で切られている。)

音声の通信を聴いていると、確かに人によって聞きやすかったり、そうでなかったりする人がいる。声質や滑舌もあると思うが、何らかの前処理によって了解度が向上するなら、それは良いことだ。

信号処理での戦略

実際のところ、あまりやれることはなくおおざっぱに言うと以下3点になりそう。

  1. ノイズをとにかく減らす
  2. イコライザを自分の声にあわせて設定する
  3. コンプレッサをかける

しかしそれぞれ調整するとかなり時間がかかる。

ノイズを減らすのは必須。余計なノイズを送信すれば確実に了解度は下がる。しかし一番確実な方法というのがないので、発生している場合減らすのはなかなか難しい。以下のような方法を全て試す。

  • 指向性マイクを使う (環境ノイズを軽減)
    • 無線機付属のPTT付きのものとか
    • いわゆるカラオケマイク的なもの
    • できれば差動出力 (XLR コネクタ) のマイクを使うほうがいい
  • シールドケーブルを使う (外来ノイズを軽減)
    • アナログのラインはすべてシールドする。地味だけど確実に効果がある
  • グラウンドループを切る (ハムノイズなどを軽減)
    • 無線機周辺でループがあると大きなノイズが入る
  • マイク入力ではなくデータ入力ラインから音声を入れる (PC出力をできるだけ大きくとって内部雑音とのSN比を改善する)
    • マイク入力は内部的に増幅率が高く設定されていることがあり、過大入力になりやすい。SN比を上げにくい

イコライザは声にあわせて設定する必要がある。了解度向上という意味では150Hz以下には殆ど声としての情報がないので完全に切って良く (ただのノイズになる)、200〜300Hz は上げると少し落ち着いた感じなるが、音が籠って了解度は下がる。400〜800Hz は人によるがあまりいじらないのが良いようだ。

SSBでは原理的に「無音」を送信することができず、常に喋っていないと受信機側のAGCによってノイズでうるさくなってしまって悩ましい。同じく AGC によって、受信側で強制的にコンプレッサ相当のことが起きるため (小さい音は大きく、大きい音は小さく)、送信時に最大限コンプレッサをかけたほうがSN比が向上し了解度はあがる。

テスト方法

無線機に入力する直前の信号を聴いても、実はあまり意味がない。他の無線機で送信される電波そのものをモニタするほうが良い。というのも、受信機側のAGCのかかり具合に印象が大きく影響されるので、送信機に入力する信号とかなり印象が変わってしまうからだ。

実際のところダミーロードをつけて漏れた電波を聞くか、同軸切替器(アイソレーションが60dB程度あっても十分漏れてくる)とダミーロードを使う。

総合的な了解度向上策

声の特性を知って適切で効果的なスピーチプロセッサをかけられる知識は、エンジニアリング的な範囲の音声による通信技術のひとつといえそう。

ただし、機械処理に頼った了解度向上策には限界があると感じる。滑舌が悪かったり、声が出てなければ結局意味がない。アナウンサーという職業があるように、明瞭な音声を出せることというのは、それ自体がある程度特殊な技術であるし、これもまた音声通信の技術向上であると感じる。

アマチュアは、スピーチプロセッサの使いかたのようなエンジニアリング的部分と、声の出しかたのようなオペレーション的部分を、一人で行うので、了解度向上のためには、総合的なこれら通信技術の向上が必要に思う。

CW に比べ音声は喋るだけなので技術がいらないと思われた (実際敷居は低い) が、ノイズが多く、限られた周波数帯域で了解度を上げるには、実際は思った以上の技術がいると感じる。CW は遠くに効率良く届けるという意味では、技術的難易度は音声よりも案外低いのかもしれない。

Behringer(ベリンガー) ベリンガー ダイナミックマイク ボーカル ULTRAVOICE XM8500 - Behringer(ベリンガー)

Behringer(ベリンガー)

5.0 / 5.0

  1. トップ
  2. tech
  3. AU Lab をスピーチプロセッサとして使う
  1. トップ
  2. ham
  3. AU Lab をスピーチプロセッサとして使う

SWR 計を作ったので、これと連携して、MLA のモーター動かして自動的に同調させる。

SWR 計つくったのは、そもそも本来これがやりたかったからなので、完全に yak-shaving
である。

アルゴリズム

  1. 適当に方向を決める (正転・逆転)
  2. 送信中になったら決めた方向に少し動かす
  3. SWR を計る
    1. 下がったらそのままさらに動かす
    2. 上がったら方向を逆にして動かす
  4. 繰替えす

SWR の大きさに応じて、一度に動かす量を可変する。

設計

既にアンテナ切替器などを Raspberry Pi に接続して管理しているので、これもそのようにする。つまり

  • I2C 接続でステッピングモーターを制御する基板をつくる
  • Raspberry Pi 上で SWR 計 と連動しながらステッピングモーターを制御する

ハードの実装

まず I2C でステッピングモーターを制御する基板をつくった。

特筆するようなことはなく、I2C 経由で方向とステップ数を書くとその通りにステッピングモーターを動かすというもの。

モーターとの接続は DIN 8PIN の一部にピンを使って行ってる。

ソフトの実装

SWR 計は USB Serial として接続し、モータードライバは Raspberry Pi の I2C バスに接続しているので、ソフトウェアは Raspberry Pi 上の Ruby で気軽に書ける。適当に書いたら動いた。

まとめ

SWR の測定誤差の関係で、連続送信していないと、どうしてもちょっと振動したり、同調点から離れすぎていると挙動不審になったりするのが改善点だが、このようなやりかたで概ねうまく動くことがわかった。

  1. トップ
  2. ham
  3. MLA 自動同調コントローラ
  1. トップ
  2. tech
  3. MLA 自動同調コントローラ