raspi3(jessie)とsoundmeterで騒音レベルを検知しようと思ったら躓いたのでその時のメモ

#経緯
Raspi君で騒音レベルが高いのを検知したら、別のRaspiのAPIをトリガーしようと思ったので準備していたらつまらんところで躓いたのです。
結論としては一応乗り越えたっぽいのでメモです。


#先生（参考にしたサイト）
http://ariarijp.hatenablog.com/entry/2016/07/17/232752
ですが、色々と手間取ったのでそのノウハウ書きます。



#インストール時の注意点

https://github.com/shichao-an/soundmeter
のReadmeを見ると

```
sudo apt-get install portaudio19-dev python-dev alsa-utils
pip install soundmeter --allow-all-external --allow-unverified pyaudio
```

となるのですが、

```
sudo apt-get install libav-tools
```

コレ入れておいて下さい。無いと後でエラーがでるのです。

#実行時の注意点

```
./soundmeter
```
ってやっても動きません。実行ファイルなし。どこだよ。

```
~/.local/bin/soundmeter
```
でした。そうなんだ。
そして、実行してもエラーがダダダーっとでます。

```
~/.local/bin $ ./soundmeter 
connect(2) call to /tmp/jack-1000/default/jack_0 failed (err=No such file or directory)
attempt to connect to server failed
Expression 'parameters->channelCount <= maxChans' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 1514
Expression 'ValidateParameters( inputParameters, hostApi, StreamDirection_In )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 2818
Traceback (most recent call last):
  File "./soundmeter", line 11, in <module>
    sys.exit(main())
  File "/home/pi/.local/lib/python2.7/site-packages/soundmeter/meter.py", line 319, in main
    m = Meter(**kwargs)
  File "/home/pi/.local/lib/python2.7/site-packages/soundmeter/meter.py", line 65, in __init__
    frames_per_buffer=FRAMES_PER_BUFFER)
  File "/home/pi/.local/lib/python2.7/site-packages/pyaudio.py", line 750, in open
    stream = Stream(self, *args, **kwargs)
  File "/home/pi/.local/lib/python2.7/site-packages/pyaudio.py", line 441, in __init__
    self._stream = pa.open(**arguments)
IOError: [Errno -9998] Invalid number of channels
```

こちら（https://github.com/shichao-an/soundmeter/issues/13） をみて、

```
>>> p.get_default_input_device_info()['maxInputChannels']
1L
```

となったので設定ファイルのchannelsを１にすることにします。
それでも

```
~/.local/bin $ ./soundmeter 
connect(2) call to /tmp/jack-1000/default/jack_0 failed (err=No such file or directory)
attempt to connect to server failed
Traceback (most recent call last):
  File "./soundmeter", line 11, in <module>
    sys.exit(main())
  File "/home/pi/.local/lib/python2.7/site-packages/soundmeter/meter.py", line 320, in main
    m.start()
  File "/home/pi/.local/lib/python2.7/site-packages/soundmeter/meter.py", line 120, in start
    record = self.record()
  File "/home/pi/.local/lib/python2.7/site-packages/soundmeter/utils.py", line 51, in start
    g.next()
  File "/home/pi/.local/lib/python2.7/site-packages/soundmeter/meter.py", line 94, in record
    data = self.stream.read(FRAMES_PER_BUFFER)
  File "/home/pi/.local/lib/python2.7/site-packages/pyaudio.py", line 608, in read
    return pa.read_stream(self._stream, num_frames, exception_on_overflow)
IOError: [Errno -9981] Input overflowed
```
というようにエラーが出ました。
いろいろ調べて、ここ（https://www.raspberrypi.org/forums/viewtopic.php?t=97821） によると、Chunkサイズを８１９２にしたらよろしいとありました。（chunkサイズがframes_per_bufferかなーと気付きました）
なので、最終的にconfigファイルを`~/.soundmeter/config`というファイル名で作成し、

```
[soundmeter]
frames_per_buffer = 8192
format = 8
channels = 1
rate = 44100
audio_segment_length = 0.5
rms_as_trigger_arg = False
```

にしたらなんかエラーは出るものの動き出しました。
とりあえずこれで良しとします。


以上です。