Mais conteúdo relacionado
2016年6月23日 デジタルガジェット祭り!「音センサー編」
- 2. 音を使った機械学習の時代!
様々な音声UIが出現
◦ AppleのSiri
◦ GoogleのGoogle Now
◦ MicrosoftのCortana
◦ AmazonのEcho
画像やテキスト解析の次に来るのは音声
◦ http://www.itmedia.co.jp/news/articles/1601/04/new
s024.html
『ザッカーバーグCEOの2016年の目標は“ジャーヴィス”のような
ホームAIの構築』
>今年の目標では、まず既存のAI技術を研究し、自分の声をホームAI
に覚えさせて、家の中のさまざまな操作──音楽の再生、電灯のオン
/オフ、室温調整など──を声で指示できるようにするところからス
タートするという。
2
- 3. http://akizukidenshi.com/catalog/g/gM-
07038/
◦ 690円
◦ コンデンサーマイクロホンとアンプを基板に取り付けて
モジュールとして取り扱いやすくしたものです。
◦ Arduinoへの接続が容易
3
void setup() {
Serial.begin(9600);
}
void loop() {
int max = 0;
unsigned long start = millis();
int count = 0;
while (millis() <= start + 100){ // 0.1秒間の最大値を取る
int value = analogRead(0); // A0
count++;
if (max < value){
max = value;
}
}
Serial.println(String(max) + " " + String(count));
delay(100);
}
サウンドセンサモジュール
A0 5V GND
MAX側に
限界まで
回す
Arduinoのコード例
- 4. ArduinoUNOでの測定精度
1秒間のサンプリング回数
◦ 約6,500回/秒
解像度
◦ 1024
どちらもArduinoUNOのアナログ入力の制約
◦ アナログ入力の読み込みに、100マイクロ秒かかる
◦ アナログ入力値は、0~1023まで 4
void setup() {
Serial.begin(9600);
}
int b_time = 0;
long count = 0;
void loop() {
int val1 = analogRead(0);
count++; // 読んだ回数をカウント
long time = millis(); // スタートしてからの時間
if ((int)(time/1000) != b_time){
Serial.println (count);
count = 0;
b_time = (int)(time/1000);
}
}
- 5. ArduinoUNOで測定
私の咳払いを測定し、Excelでグラフ化してみた
5
void setup() {
Serial.begin(9600);
}
void loop() {
int val1 = analogRead(0);
Serial.println (val1);
}
0
50
100
150
200
250
300
350
1
19
37
55
73
91
109
127
145
163
181
199
217
235
253
271
289
307
325
343
361
379
397
415
http://gigazine.net/news/20
150108-just-turn-up-the-
volume/
こんな絵にはならなかった
- 6. 環境音の測定
◦ 社内で動作させると、ほぼ0、たまに1、まれに2以上
気になる程度の音があると「1」が出る
近くで打ち合わせをしていると最大「4」が出た
防犯目的であれば、「1」以上でカメラを動作させる、など
◦ 対象にかなり近づける必要がある
距離で音の強さが大きく変わるので、距離の情報も重要
周波数ごとに分解
◦ Arduino用のフーリエ変換ライブラリ
FFT(Fast Fourier Transform)
http://tetsuakibaba.jp/index.php?page=workshop/ArduinoFF
T/main
注意:かなりメモリを食うので、他ライブラリとの併用は厳しい
UNO(2KByte)よりメモリの多いArduinoを使用すること
6
使ってみた