現状USBマイクしか現実的な選択肢はないようですね。
こういうのを使ってみました。
ヘッドセット (ELECOMのHS-EP13USV)のマイクのみ使用
必要ないかもしれませんが、一応アプリをインストールしておきます。
$sudo apt-get update
$sudo apt-get upgrade
$sudo rpi-update
$sudo apt-get install alsa-base alsa-utils alsa-tools
ちなみに、RaspbianのバージョンはStretch(Debian 9)
USBマイクをセットすれば、何もしなくてもデバイスの認識はされるようです。
録音に使用できるデバイス一覧の確認
$arecord -l
カード番号とデバイス番号を確認
マイクの音量を確認する(カード 1の場合 -c 1を指定)
$ amixer sget Mic -c 1
0~496の範囲
マイクの音量を設定する
$ amixer sset Mic 400 -c 1
録音する
$arecord -D plughw:<カード番号>,<デバイス番号> test.wav
例えば
$arecord -D plughw:1,0 test.wav
ノイズが入るようなら以下をテスト
$ arecord -D plughw:1,0 -f cd -r 16000 test.wav
or
$arecord -D plughw:1,0 -f cd -r 44100 test.wav
再生する
$aplay test.wav
注:
ヘッドセットのスピーカーからは聞けません。ラズパイ側のミニジャックから音は拾ってください。
エラーが出る場合
arecord: main:788: audio open error: デバイスもしくはリソースがビジー状態です
$pkill -9 arecord
マイクから入力した音をそのままスピーカーから出力
音を飛ばす簡単な方法
入力した音をパイプでスピーカーにスルー
arecord -f S16_LE -r 44100 -D hw:<カード番号> | aplay
例えば
$arecord -f S16_LE -r 44100 -D hw:1 | aplay
標準入出力の変更で話が済むのがUNIX系のいいところ?
ELECOMのBluetoothモノラルスピーカーに音を飛ばしてみましたが、問題なしでした。
こういう構成だとスピーカーからの出力は若干ですが遅延します、ほんのちょっとですが。
Bluetoothトランスミッターには十分な電力供給が必要です。この図ではUSBから取っていますが
不足する場合は音が出ないことがあります。外部電源からの供給も考慮する必要があります。
この製品のスピーカー側には内蔵バッテリーがあります、充電が十分なら8時間持つそうです。
音声認識・合成
あるいは
クラウドサービスを使ってみる
ラズパイ3で音声入力して認識・合成(2)
ラズパイ3でGoogle Assistant を使ってみる(メモ)
Leave a Reply