音声を送信する¶
EDGEPLANT T1のオンボードの音声ジャックに接続されたマイクから、付属デバイスコネクターdevice-connector-intdashを使用して音声データを取得し、リアルタイム送信するための設定例です。
重要
本設定を使用する際は、オンボードの音声ジャック以外にはマイクを接続しないでください。 USB接続のマイクなどが接続されていると、オンボードの音声ジャック以外から音声を取得する可能性があります。
アップストリームの設定¶
以下のコマンドを実行して、 recoverable
というIDを持つアップストリームを作成します。
指定しているのはIDのみのため、他の設定値はデフォルトのとおりになります。
$ intdash-agentctl config up --create '
id: recoverable
'
デバイスコネクターの設定¶
intdash Edge Agent 2にデバイスコネクターを追加します。以下のコマンドを実行して設定を行ってください。
$ intdash-agentctl config device-connector up --create '
id: pcm
data_name_prefix: v1/150
format: iscp-v2-compat
dest_ids:
- recoverable
ipc:
type: fifo
path: /var/run/intdash/pcm.fifo
launch:
cmd: device-connector-intdash
args:
- --config
- /etc/dc_conf/pcm.yml
environment:
- DC_PROCESS_SRC_CONF_COMMAND="gst-launch-1.0 -q alsasrc device=hw:1 ! audioconvert ! audio/x-raw,format=S32LE,rate=48000,channels=1 ! fdsink fd=1"
- DC_PCM_SPLIT_FILTER_CONF_DELAY_MS=0
- DC_PCM_SPLIT_FILTER_CONF_AUDIO_ELEMENT="y Jack-state"
- DC_PCM_SPLIT_FILTER_CONF_AUDIO_IFACE="mixer"
- DC_PCM_SPLIT_FILTER_CONF_AUDIO_FORMAT="S32LE"
- DC_PCM_SPLIT_FILTER_CONF_AUDIO_RATE=48000
- DC_PCM_SPLIT_FILTER_CONF_AUDIO_CHANNELS=1
- DC_PCM_SPLIT_FILTER_CONF_PATH=/dev/snd/by-path/platform-sound
- DC_PRINT_LOG_FILTER_CONF_TAG=pcm
- DC_FILE_SINK_CONF_PATH=/var/run/intdash/pcm.fifo
'
launch
で、device-connector-intdashを起動するように設定しています。device-connector-intdashを実行するための設定は、パイプライン設定ファイル
/etc/dc_conf/pcm.yml
として与えています(このファイルは次の手順で作成します)。 また、パイプライン設定ファイルで使用するための環境変数をenvironment
で与えています 。device-connector-intdashから
/var/run/intdash/pcm.fifo
を介して得られたデータは、v1/150
というデータ名称プリフィックスを与えられて、recoverable
というIDを持つアップストリームに送信されます。
device-connector-intdashのパイプライン設定¶
device-connector-intdash用のパイプライン設定ファイルを以下の内容で作成し、 /etc/dc_conf/pcm.yml
として保存します。
tasks:
- id: 1
element: process-src
conf:
command: $(DC_PROCESS_SRC_CONF_COMMAND)
- id: 2
element: pcm-split-filter
from: [ [1] ]
conf:
clock_id: CLOCK_MONOTONIC
delay_ms: $(DC_PCM_SPLIT_FILTER_CONF_DELAY_MS)
audio_element: $(DC_PCM_SPLIT_FILTER_CONF_AUDIO_ELEMENT)
audio_iface: $(DC_PCM_SPLIT_FILTER_CONF_AUDIO_IFACE)
audio_format: $(DC_PCM_SPLIT_FILTER_CONF_AUDIO_FORMAT)
audio_rate: $(DC_PCM_SPLIT_FILTER_CONF_AUDIO_RATE)
audio_channels: $(DC_PCM_SPLIT_FILTER_CONF_AUDIO_CHANNELS)
path: $(DC_PCM_SPLIT_FILTER_CONF_PATH)
- id: 3
element: print-log-filter
from: [ [2] ]
conf:
interval_ms: 10000
tag: $(DC_PRINT_LOG_FILTER_CONF_TAG)
output: stderr
- id: 4
element: file-sink
from: [ [3] ]
conf:
create: true
flush_size: 100
path: $(DC_FILE_SINK_CONF_PATH)
process-srcエレメントでは、環境変数として与えられた値(
DC_PROCESS_SRC_CONF_COMMAND
)を使ってマイクから音声データを取得します。(参考: process-src )pcm-split-filterではそれをFIFO用データフォーマットに分割・変換するとともに、タイムスタンプを与えます。(参考: pcm-split-filter )
print-log-filterでは標準エラー出力にログを出力します。(参考: print-log-filter )
file-sinkでは、$(DC_FILE_SINK_CONF_PATH)にFIFO用データフォーマットのデータが書き出されます。これをintdash Edge Agent 2が読み取ります。(参考: file-sink )