EBUG勉強会/20120218_Audacityで信号処理
をテンプレートにして作成
Start:
#topicpath
RIGHT:EBUG 第41回会合~
2012年2月18日 @(株)銀座堂~
川俣吉広、kaw@on.rim.or.jp
#contents
*発端 - 最初はまともな動機だったのに.....
-震災後、電池で使えるラジオが家にないことに気がつく。
--安い奴でいいから買っとこう。
|&ref(radio.jpg,,33%);|
|CENTER:中華ラジオ ¥1,980也|
--単三2本で300h使用可。あと、短波帯も聴けるし。
-ヘタに短波とか付いてたので、いじってるうちに私の中のラジ...
しかし室内だとノイズだらけで聴けたもんじゃないな - &ref(N...
-普通なら今時[[rajiko>http://rajiko.jp/]]とか[[らじる☆ら...
決まった局しか聴けないのはやっぱりつまんないな (それに一...
*なんかもう意地(雀を撃つのに大砲を持ち出す)
-昔使ってた無線機を20年ぶりくらいに箱から出してきた。
|&ref(ft757.jpg,,33%);|
|CENTER:YAESU FT-757GX|
--受信周波数 500kHz~30MHz, 受信モード SSB, CW, AM, FM.
--当初、受信周波数が不安定だったので再調整 ... トリマコン...
-そして、ベランダにアンテナを張る。
|&ref(Antenna.jpg,,33%);|&ref(balun.jpg,,33%);|
|CENTER:全体|CENTER:給電部(BALUN)|
|&ref(Boom.jpg,,33%);|・とにかく、とにかく目立たないよう...
|CENTER:支持部|CENTER:設置条件 - これも集合住宅住まいの定...
--ブーム先端を導通させれば1λループ、カットすればλ/2ダイポ...
---理屈から言えば、λ/2ダイポールのほうがより低い周波数に...
---実際にはループのほうが感度は低かったが、外来ノイズはそ...
|&ref(Antenna.gif);|
|CENTER:設置構造、等価回路|
*で、実際どんなもんなのか? ... 船舶気象通報で耳試し
|船舶気象通報&br;&br;・海上保安庁が運用&br;&br;・周波数、...
|>|RIGHT:&size(10){(送信所の写真は[[こちら>http://img.blo...
というわけで、受信能力を試すには結構よさげな対象。
*ラジオを聴くのにAudacityを持ち出す
**セッティング
#ref(Setups.jpg,wrap,around,right,33%)
[[Audacity>http://audacity.sourceforge.net/]] - フリーで...
-録音 / 編集 / 再生機能
-各種音声ファイル形式のImport/Export
-各種パラメータの解析表示
-直感的なUI (WxWidgets使用)
-GPL
通常は音楽などの編集・加工に用いられることが多いと思われ...
#img(,clear)
----
|&ref(Diagram.gif);|
|CENTER:系統図|
**調整
''大原則'' - レベルオーバーさせない。
-アナログ / デジタルのどちらの領域でも鉄則。
--アナログ - 非線形領域に達すると信号が不可逆に歪む。
--デジタル - サンプリング時に量子化レベルを越えてしまった...
-デジタル領域におけるレベル表現 ... dBFS
--最大の量子化レベル(FS: full scale)を 0dB とした場合のdB...
調整方法
-RXのAF GainとPCのLine In (or Mic In)の両方で調整 ... 歪...
--PCの調整はOpenBSDの場合、[[mixerctl(1)>http://www.openb...
--レベルのモニタリングはAudacityのVU Meterが使用できる。
*振幅変調についておさらい
振幅変調とは、正弦波との乗算(周波数変換も)。
|&ref(AMsignal.gif);|
|CENTER:時間領域|
三角関数の加法定理から
sin((ωc+ωb)*t) = sin(ωc*t)*cos(ωb*t)+cos(ωc*t)*sin(ωb*t)
sin((ωc-ωb)*t) = sin(ωc*t)*cos(ωb*t)-cos(ωc*t)*sin(ωb*t)
-ωc: 搬送波の角周波数
-ωb: 被変調波の角周波数
sin(ωc*t)*cos(ωb*t) = (sin((ωc+ωb)*t)+sin((ωc-ωb)*t))/2
sin(ωc*t)*(C+cos(ωb*t)) = (C*sin(ωc*t)+sin((ωc+ωb)*t)+si...
-C: 直流成分
被変調波に直流成分が含まれていると、変調波では搬送波が現...
|&ref(AMsignal_Spect.gif);|
|CENTER:周波数領域|
要するに正弦波を掛け算するとその周波数だけ、元の信号のス...
&size(10){あと、直交成分が加わった場合の位相表現を複素平...
*試行錯誤の道筋
**記録してみよう
***受信機側の作業
-信号強度と音声を同時に記録したい。
--信号強度を記録するには、搬送波も音声として記録すればよ...
--受信モードをUSB (Upper Side Band)とし、受信周波数を若干...
---こんな感じ ... &ref(SSBtune.3g2);
---これだと音声はまともに復調されないが、これをどうするか...
***PC側の作業
考えられる幾つかの方法;
+Audacity立ち上げて録音ボタンをポチッ
++リアルタイムでグラフィカルに波形とか表示しているので、...
++非圧縮で記録してるのでディスク容量を食う。
++一定の間隔でファイルを生成する、とかが面倒。
++タイムコードとかも付いてないので、あとで実時間との対応...
~
+dd if=/dev/audio of=outputfile.raw とか
++やっぱり、非圧縮で記録してるのでディスク容量を結構食う...
~
+lameを用いて、MP3にエンコードしながら記録
++不可逆圧縮なので、測定精度に影響がでるかも....
lameを用いる方法でやってみた。2つのシェルコードを走らせる。
while :; do
lame -r -s 48 -m m -a --preset 32 /dev/audio `date +...
done
while :; do
sleep 3600
pkill lame
done
そして、例えば次の正時が13:00だとすると、
echo 'pkill -f "sleep 3600"' | at 1300
とする。これで毎正時に出力するファイルが更新される。~
lameを上記のオプションで実行すると;
Autoconverting from stereo to mono. Setting encoding to ...
Resampling: input 48 kHz output 22.05 kHz
Using polyphase lowpass filter, transition band: 8269 H...
Encoding /dev/audio to /dev/null
Encoding as 22.05 kHz single-ch MPEG-2 Layer III (11x) a...
Frame | CPU time/estim | REAL time/estim |...
400/400 (100%)| 0:00/ 0:00| 0:10/ 0:10|...
8 [ 0]
16 [ 0]
24 [ 75] *****************
32 [320] **********************************************...
40 [ 5] **
48 [ 0]
56 [ 0]
64 [ 0]
80 [ 0]
96 [ 0]
112 [ 0]
128 [ 0]
144 [ 0]
160 [ 0]
--------------------------------------------------------...
kbps mono % long %
30.6 100.0 100.0
-入力データは、/dev/audioから出力される raw format を指定
--16bit 48kHzサンプリングのリニアPCMデータがそのまま出力...
-ステレオのL,R入力に同じ音声が入力されてるので、1chにmix-...
- --presetでエンコードビットレートを指定。概ね 8kHz以下の...
-サイズは 約 6.5MB/hour 。
**解析してみよう [[ >:Audacity/解析]]
まずは、受信信号の強度を測定してみる。
-編集波形の表示形式
--Waveform(Linear/Log)
--Spectrogram(Linear/Log)
--Pitch(EAC)
-Analyze -> Plot Spectrum
受信信号の強度を測定するには、ノイズや側帯波を除外する処...
-搬送波のみ抽出したい ... 変調波やノイズの影響を避ける
--Effect -> Equalization ~
EQpreset.xmlの裏ワザ
--受信機の特性(AGC)に関する注意
-結果を見てみよう
--一時間中の各局の信号強度
|&ref(carrier-1hr.png,,50%);|
|CENTER:2012 2/14, 2300-2400|
|&ref(carrier-1hr-mag.png,,50%);|
|CENTER:部分的に拡大|
#aname(signal-aday)
--日変化 ... 地表波 VS 空間波
|&ref(carrier-hourly.png,,50%);|
|CENTER:2012 2/14, 12,17,24,30時から各一時間|
--日毎の変化
|&ref(carrier-daily.png,,50%);|
|CENTER:2012 2/12~2/15 各23時から一時間|
**加工してみよう [[ >:Audacity/加工]]
#ref(Modulation.gif,wrap,around,right)
-音声も正常に復調して聞きたい
--搬送波を記録するため、同調周波数が約800Hzほどずれている...
... これをシフトさせて、聴取できる状態にしてみる。
-使用する機能: Effect -> Toremolo ... 正弦波で乗算する操作
--Toremoloでは周波数がシフトするが、元々の周波数成分も残...
...なので、元々の信号とオーバラップしないようにシフトさせ...
+Toremolo - 4000Hz
+HPF - 4600Hz
+Toremolo - 4600Hz
+LPF - 3500Hz
-周波数変換を2回行うので、やっていることはダブルスーパー...
-あと、乗算により振幅が減少する場合があるので、適宜Normai...
*まとめ [[ >:Audacity/まとめ]]
-古い受信機であっても、PCと組み合わせると受信音を耳で聴く...
--OpenBSDを使う場合は、mixerctlだけではなく、audioctlやau...
-制限はあるものの、Audacityを変復調などに使用することも可...
-とはいえ、アンテナ・受信機の性能がやっぱり重要
--[[これ>http://microtelecom.it/perseus/]]欲しい([[究極>h...
--あと、アンテナで良さげなのはMLA (Magnetic Loop Antenna:...
----
#topicpath
End:
#topicpath
RIGHT:EBUG 第41回会合~
2012年2月18日 @(株)銀座堂~
川俣吉広、kaw@on.rim.or.jp
#contents
*発端 - 最初はまともな動機だったのに.....
-震災後、電池で使えるラジオが家にないことに気がつく。
--安い奴でいいから買っとこう。
|&ref(radio.jpg,,33%);|
|CENTER:中華ラジオ ¥1,980也|
--単三2本で300h使用可。あと、短波帯も聴けるし。
-ヘタに短波とか付いてたので、いじってるうちに私の中のラジ...
しかし室内だとノイズだらけで聴けたもんじゃないな - &ref(N...
-普通なら今時[[rajiko>http://rajiko.jp/]]とか[[らじる☆ら...
決まった局しか聴けないのはやっぱりつまんないな (それに一...
*なんかもう意地(雀を撃つのに大砲を持ち出す)
-昔使ってた無線機を20年ぶりくらいに箱から出してきた。
|&ref(ft757.jpg,,33%);|
|CENTER:YAESU FT-757GX|
--受信周波数 500kHz~30MHz, 受信モード SSB, CW, AM, FM.
--当初、受信周波数が不安定だったので再調整 ... トリマコン...
-そして、ベランダにアンテナを張る。
|&ref(Antenna.jpg,,33%);|&ref(balun.jpg,,33%);|
|CENTER:全体|CENTER:給電部(BALUN)|
|&ref(Boom.jpg,,33%);|・とにかく、とにかく目立たないよう...
|CENTER:支持部|CENTER:設置条件 - これも集合住宅住まいの定...
--ブーム先端を導通させれば1λループ、カットすればλ/2ダイポ...
---理屈から言えば、λ/2ダイポールのほうがより低い周波数に...
---実際にはループのほうが感度は低かったが、外来ノイズはそ...
|&ref(Antenna.gif);|
|CENTER:設置構造、等価回路|
*で、実際どんなもんなのか? ... 船舶気象通報で耳試し
|船舶気象通報&br;&br;・海上保安庁が運用&br;&br;・周波数、...
|>|RIGHT:&size(10){(送信所の写真は[[こちら>http://img.blo...
というわけで、受信能力を試すには結構よさげな対象。
*ラジオを聴くのにAudacityを持ち出す
**セッティング
#ref(Setups.jpg,wrap,around,right,33%)
[[Audacity>http://audacity.sourceforge.net/]] - フリーで...
-録音 / 編集 / 再生機能
-各種音声ファイル形式のImport/Export
-各種パラメータの解析表示
-直感的なUI (WxWidgets使用)
-GPL
通常は音楽などの編集・加工に用いられることが多いと思われ...
#img(,clear)
----
|&ref(Diagram.gif);|
|CENTER:系統図|
**調整
''大原則'' - レベルオーバーさせない。
-アナログ / デジタルのどちらの領域でも鉄則。
--アナログ - 非線形領域に達すると信号が不可逆に歪む。
--デジタル - サンプリング時に量子化レベルを越えてしまった...
-デジタル領域におけるレベル表現 ... dBFS
--最大の量子化レベル(FS: full scale)を 0dB とした場合のdB...
調整方法
-RXのAF GainとPCのLine In (or Mic In)の両方で調整 ... 歪...
--PCの調整はOpenBSDの場合、[[mixerctl(1)>http://www.openb...
--レベルのモニタリングはAudacityのVU Meterが使用できる。
*振幅変調についておさらい
振幅変調とは、正弦波との乗算(周波数変換も)。
|&ref(AMsignal.gif);|
|CENTER:時間領域|
三角関数の加法定理から
sin((ωc+ωb)*t) = sin(ωc*t)*cos(ωb*t)+cos(ωc*t)*sin(ωb*t)
sin((ωc-ωb)*t) = sin(ωc*t)*cos(ωb*t)-cos(ωc*t)*sin(ωb*t)
-ωc: 搬送波の角周波数
-ωb: 被変調波の角周波数
sin(ωc*t)*cos(ωb*t) = (sin((ωc+ωb)*t)+sin((ωc-ωb)*t))/2
sin(ωc*t)*(C+cos(ωb*t)) = (C*sin(ωc*t)+sin((ωc+ωb)*t)+si...
-C: 直流成分
被変調波に直流成分が含まれていると、変調波では搬送波が現...
|&ref(AMsignal_Spect.gif);|
|CENTER:周波数領域|
要するに正弦波を掛け算するとその周波数だけ、元の信号のス...
&size(10){あと、直交成分が加わった場合の位相表現を複素平...
*試行錯誤の道筋
**記録してみよう
***受信機側の作業
-信号強度と音声を同時に記録したい。
--信号強度を記録するには、搬送波も音声として記録すればよ...
--受信モードをUSB (Upper Side Band)とし、受信周波数を若干...
---こんな感じ ... &ref(SSBtune.3g2);
---これだと音声はまともに復調されないが、これをどうするか...
***PC側の作業
考えられる幾つかの方法;
+Audacity立ち上げて録音ボタンをポチッ
++リアルタイムでグラフィカルに波形とか表示しているので、...
++非圧縮で記録してるのでディスク容量を食う。
++一定の間隔でファイルを生成する、とかが面倒。
++タイムコードとかも付いてないので、あとで実時間との対応...
~
+dd if=/dev/audio of=outputfile.raw とか
++やっぱり、非圧縮で記録してるのでディスク容量を結構食う...
~
+lameを用いて、MP3にエンコードしながら記録
++不可逆圧縮なので、測定精度に影響がでるかも....
lameを用いる方法でやってみた。2つのシェルコードを走らせる。
while :; do
lame -r -s 48 -m m -a --preset 32 /dev/audio `date +...
done
while :; do
sleep 3600
pkill lame
done
そして、例えば次の正時が13:00だとすると、
echo 'pkill -f "sleep 3600"' | at 1300
とする。これで毎正時に出力するファイルが更新される。~
lameを上記のオプションで実行すると;
Autoconverting from stereo to mono. Setting encoding to ...
Resampling: input 48 kHz output 22.05 kHz
Using polyphase lowpass filter, transition band: 8269 H...
Encoding /dev/audio to /dev/null
Encoding as 22.05 kHz single-ch MPEG-2 Layer III (11x) a...
Frame | CPU time/estim | REAL time/estim |...
400/400 (100%)| 0:00/ 0:00| 0:10/ 0:10|...
8 [ 0]
16 [ 0]
24 [ 75] *****************
32 [320] **********************************************...
40 [ 5] **
48 [ 0]
56 [ 0]
64 [ 0]
80 [ 0]
96 [ 0]
112 [ 0]
128 [ 0]
144 [ 0]
160 [ 0]
--------------------------------------------------------...
kbps mono % long %
30.6 100.0 100.0
-入力データは、/dev/audioから出力される raw format を指定
--16bit 48kHzサンプリングのリニアPCMデータがそのまま出力...
-ステレオのL,R入力に同じ音声が入力されてるので、1chにmix-...
- --presetでエンコードビットレートを指定。概ね 8kHz以下の...
-サイズは 約 6.5MB/hour 。
**解析してみよう [[ >:Audacity/解析]]
まずは、受信信号の強度を測定してみる。
-編集波形の表示形式
--Waveform(Linear/Log)
--Spectrogram(Linear/Log)
--Pitch(EAC)
-Analyze -> Plot Spectrum
受信信号の強度を測定するには、ノイズや側帯波を除外する処...
-搬送波のみ抽出したい ... 変調波やノイズの影響を避ける
--Effect -> Equalization ~
EQpreset.xmlの裏ワザ
--受信機の特性(AGC)に関する注意
-結果を見てみよう
--一時間中の各局の信号強度
|&ref(carrier-1hr.png,,50%);|
|CENTER:2012 2/14, 2300-2400|
|&ref(carrier-1hr-mag.png,,50%);|
|CENTER:部分的に拡大|
#aname(signal-aday)
--日変化 ... 地表波 VS 空間波
|&ref(carrier-hourly.png,,50%);|
|CENTER:2012 2/14, 12,17,24,30時から各一時間|
--日毎の変化
|&ref(carrier-daily.png,,50%);|
|CENTER:2012 2/12~2/15 各23時から一時間|
**加工してみよう [[ >:Audacity/加工]]
#ref(Modulation.gif,wrap,around,right)
-音声も正常に復調して聞きたい
--搬送波を記録するため、同調周波数が約800Hzほどずれている...
... これをシフトさせて、聴取できる状態にしてみる。
-使用する機能: Effect -> Toremolo ... 正弦波で乗算する操作
--Toremoloでは周波数がシフトするが、元々の周波数成分も残...
...なので、元々の信号とオーバラップしないようにシフトさせ...
+Toremolo - 4000Hz
+HPF - 4600Hz
+Toremolo - 4600Hz
+LPF - 3500Hz
-周波数変換を2回行うので、やっていることはダブルスーパー...
-あと、乗算により振幅が減少する場合があるので、適宜Normai...
*まとめ [[ >:Audacity/まとめ]]
-古い受信機であっても、PCと組み合わせると受信音を耳で聴く...
--OpenBSDを使う場合は、mixerctlだけではなく、audioctlやau...
-制限はあるものの、Audacityを変復調などに使用することも可...
-とはいえ、アンテナ・受信機の性能がやっぱり重要
--[[これ>http://microtelecom.it/perseus/]]欲しい([[究極>h...
--あと、アンテナで良さげなのはMLA (Magnetic Loop Antenna:...
----
#topicpath
Page: