Smile Engineering blog ( スマイルエンジニアリング・ブログ )

ジェイエスピーからTipsや技術特集、プロジェクト物語を発信します

Audactyで周波数分析

2018-10-04 10:00:00 | JSP-knowledge

 

前回「Audacity」を紹介しましたが、周波数の波形表示を使ってみました。

 

Audacity

https://www.audacityteam.org/

Audacityの周波数の波形表示には2つの方法があります。
Audacity2-100.jpg

【ファイル名】メニューから【 スペクトログラム】、もう一つは、【解析】➞【 スペクトラム表示】です。

時間軸の波形

デフォルトでは時間軸の波形です。
Audacity2-120.jpg

スペクトログラム

【ファイル名】➞【 スペクトログラム】
表示波形のファイル名のところを、プルダウンするとメニューが出てきます。スペクトログラムを選択すると、縦軸が周波数、横軸が時間で、周波数成分のレベルは色で表されます。「Audacity」では、青→赤→白の順にレベルが上がっています。時間軸の波形(上の図の波形)で4.5秒~6.5秒くらいで振幅が大きい(信号のレベルが大きい)部分がありますが、次の波形で見ると、約1kHzまでの低域が白く表示されています。この区間の信号の周波数成分は1kHz以下に集中していることが分かります。

Audacity2-200.jpg

スペクトラム

【解析】➞【 スペクトラム表示】
次の波形は、信号の大きい4.5秒~6.5秒くらいの範囲を選択したものです。

対数周波数軸

前の図の波形のスペクトログラムで白くなっている0Hz~1kHz位のレベルが高く、特に600Hz, 880Hz付近が大きいことが分かります。また、スペクトログラムで赤くなっている3kHz付近も少しレベルがあることが分かります。

Audacity2-300.jpg

リニア周波数軸

こちらでも、0Hz~1kHz(特に600Hz, 880Hz), そのあとの3kHz付近のレベル高い特性が分かります。

Audacity2-320.jpg

「サイズ」とは周波数解析するフレームサイズで、FFT(高速フーリエ変換)のサイズ(サンプル数)です。一般的には2のべき乗だと都合が良いので、512とか1024とか大きい方が品質が良くなります。PCのスペックが低く時間がかかる場合は小さくすると品質は下がりますが早くなります。
48kHzの場合、サイズ=1024サンプルとは約21msになります。

  • 1/48000(Hz) × 1024 = 0.21(ms)

「軸」は、横軸のサンプリング周波数です。例えば48kHzの場合0~24kHzになります。表現できる周波数はサンプリング周波数の半分です(サンプリング定理)。対数とリニアは表示方法なのでどちらでも。

  • <var id="internallink-13" class="internallink">#13</var> サンプリング周波数とビットレート

「関数」とは窓関数のことです。参考(https://ja.wikipedia.org/wiki/%E7%AA%93%E9%96%A2%E6%95%B0)

スペクトラム表示設定説明
アルゴリズム: スペクトラム表示 周波数成分の表示
関数: Hanningウィンドウ 窓関数
サイズ: 128~65,536(※) FFTのサイズ
軸: 対数周波数軸 or リニア周波数軸 表示方法なのでどちらでも

(※)「Audacity」では、最大65,553まであり、大きい方が精度が高いです。

トーン信号の生成

【ジェネレーター】➞【 トーン】
信号を生成する場合は、ジェネレーターです。今回はトーン信号を生成してみました。
サイン波で周波数は適当に1000(Hz)です。

トーン設定説明
波形: サイン波 波形の種類
周波数(Hz): 1000 とりあえず1kHz
振幅(0-1): 0.8 0~1.0の値で、今回はデフォルトのままです。

カーソルを波形の上に置き、Ctrl+スクロールで波形が拡大されます。
Audacity2-410.jpg

これを、スペクトラム表示すると、1000Hzのところのとんがっているのが分かります。

Audacity2-420.jpg

 

moniswitch
  今お使いの離床センサーがそのまま使える!
  離床センサーのスイッチ入れ忘れ事故を防止するスマートスイッチ 

monipet
  動物病院の犬猫の見守りをサポート
  病院を離れる夜間でも安心

ASSE/CORPA
  センサー、IoT、ビッグデータを活用して新たな価値を創造
  「できたらいいな」を「できる」に

OSGi対応 ECHONET Lite ミドルウェア
  短納期HEMS開発をサポート!

GuruPlug
  カードサイズ スマートサーバ

株式会社ジェイエスピー
  横浜に拠点を置くソフトウェア開発・システム開発・
  製品開発(monipet)、それに農業も手がけるIT企業

コメント

Raspberry Pi3 で xilinx-tiny-cnn

2018-10-04 10:00:00 | JSP-knowledge

目標

Raspberry Pi3 で xilinx-tiny-cnn の example をビルドします。

ネタ元

xilinx-tiny-cnn
https://github.com/Xilinx/xilinx-tiny-cnn

opencv
https://github.com/opencv/opencv

環境

Raspberry Pi 3 Model B

$ lsb_release -a No LSB modules are available. Distributor ID: Raspbian Description: Raspbian GNU/Linux 8.0 (jessie) Release: 8.0 Codename: jessie 
$ uname -a Linux raspberrypi 4.9.35-v7+ #1014 SMP Fri Jun 3014:47:43 BST 2017 armv7l GNU/Linux 

手順

OpenCV のインストール

xilinx-tiny-cnn のビルドに必要なのでインストールします。

OpenCV: Installation in Linux
http://docs.opencv.org/master/d7/d9f/tutorial_linux_install.html

パッケージのインストールは required のみで。

$ sudo apt install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev 

clone して、

$ git clone https://github.com/opencv/opencv.git $ git clone https://github.com/opencv/opencv_contrib.git 

cmake/make します。

$ cd opencv $ mkdir Build $ cd Build $ cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local .. $ make -j4 # runs 4 jobs in parallel 

そこそこ時間がかかります。ドキュメントの make は optional なので省略します。

インストールします。

$ sudo make install 

xilinx-tiny-cnn のビルド

clone します。

$ git clone https://github.com/Xilinx/xilinx-tiny-cnn.git 

このままだとビルドできません。 CNN_LOG_VECTOR() の実体(実装)が無いためです。これはデバッグ用途のログ出力メソッドと思われるので無効化します。 util.h に宣言があります。

//void CNN_LOG_VECTOR(const vec_t& vec, const std::string& name); #define CNN_LOG_VECTOR(vec, name) 

もちろん、ダンプするような実装を追加しても良いです。

cmake/make します。 Intel SSE 、 Intel AVX を無効にする必要があるので、

$ cmake -DUSE_SSE=OFF -DUSE_AVX=OFF -DBUILD_EXAMPLES=ON .. $ make -j4 # runs 4 jobs in parallel 

とします。

example_cifar_train 、 example_mnist_test 、 example_mnist_train ができました。


moniswitch
  今お使いの離床センサーがそのまま使える!
  離床センサーのスイッチ入れ忘れ事故を防止するスマートスイッチ 

monipet
  動物病院の犬猫の見守りをサポート
  病院を離れる夜間でも安心

ASSE/CORPA
  センサー、IoT、ビッグデータを活用して新たな価値を創造
  「できたらいいな」を「できる」に

OSGi対応 ECHONET Lite ミドルウェア
  短納期HEMS開発をサポート!

GuruPlug
  カードサイズ スマートサーバ

株式会社ジェイエスピー
  横浜に拠点を置くソフトウェア開発・システム開発・
  製品開発(monipet)、それに農業も手がけるIT企業

コメント