hiro yamamoto works

マイコンハード、ソフトを作ったりしています。
お家や現場のお困りごと解決に!
内容利用は自己責任でお願いします。

bluetoothで音声を送る(リモートスピーカーとして使ってみる)

2024-09-30 11:36:54 | bluetooth-Audio

プロジェクトのスタートでタイトルを"bluetoothで音声を送る"
としてしまったのですが、bluetoothより良い方法が見つかりました。
タイトルそのままでお送りしております。

ネタとなったお困りごと:
"音声を数百メートル離れたところへ届けたい"

この記事では
"OBS-Studio 配信 to go2rtc 受信"の使い方をご提案します。
ガマンポイント
なにかが良くないのか受信側("go2rtc")で、すんなりつながりません。
一旦つながれば途中でつながらなくなることはないのですが・・・

bluetoothより良い点は、LANでつながっていれば送れるとこでしょうか。

ダイニングテーブルのPCから送って

少し離れたスピーカーで聞いています。スピーカーはONKYOのGX-R3です。

ノートPCのスピーカーよりは随分マシな音が出ています。


bluetoothで音声を送る(ごめんなさい OBS-Studioで配信してgo2rtcで受信)

2024-09-13 14:20:55 | bluetooth-Audio

プロジェクトのスタートでタイトルを"bluetoothで音声を送る"
としてしまったのですが、bluetoothより良い方法が見つかりました。
タイトルそのままでお送りしております。

追記しました。
説明不足を加筆変更しました。

ネタとなったお困りごと:
"音声を数百メートル離れたところへ届けたい"

この記事では"OBS-Studioで配信してgo2rtcで受信"を、備忘記として記録しておきたいと思います。

同一ネットワークに接続された2台のPCに、それぞれアプリインストールと設定します。

配信先のPC
"go2rtc"を準備します。
Windowsなら"go2rtc_win64.zip"を探してダウンロード解凍しておきます。
mac、linux版(linux_armも)あります。環境に合ったファイルを選びます。
必要があればフォルダを作って入れます。
Windowsでは
コマンドプロンプトを開いて、
まず、このPCのIPアドレスを" ipconfig"で 調べておきます。(OBS-Studioの設定で使います)
次に、解凍してできたフォルダをコマンドプロンプトで開く。
(cdコマンドでこんな感じ、***は環境に合わせて"cd C:¥***¥***¥Downloads¥go2rtc_win64¥")
"go2rtc"と入力し"Enter"キー押す。
LinuxPCでは
ファイルマネージャーでフォルダを開き、
"ツール(L)"次に"現在のフォルダを端末で開く"でコマンドプロンプトのようなものが開きます。
IPアドレスを"ifconfig"で 調べておきます。"inet"の後ろがそれです。
次に"./go2rtc_linux_arm"(ドット スラッシュ 解凍されたファイル名)と入力し"Enter"キー押す。

Windowsではこんな感じでOK(Linuxでも類似した表示となります。)

次に、ブラウザで"localhost:1984"開く
"Add"をクリック

ストリーム名と配信元のURLを入力します。(URLは"http://配信元PCのIPアドレス/")
配信元PC(OBS-StudioをインストールするPC)のIPアドレスを調べて入力します。
注意:ストリーム名は配信元と一致する必要があります。(例では"test3")
次に"Add"をクリック、ダイアログボックス出る"OK"クリック。

ページ上の6個ボタン左端"Streams"をクリックすると次の状態になる。

配信元PCの準備をします。
"OBS-Studio-30.2.3-Windows-Installerexe"(2024.09.13 時点のバージョン)
(macOS、Ubuntu、Windows版がありました。)
検索して見つけ、インストールします。

次に、"OBS Studio"を開きます。(初回起動は何かダイアログボックス出ますが・・・)
(注:左下の"ソース"は、開いた直後は何も表示されていません。)

次に"設定"→"配信"と進みます。
サービス:WHIP
サーバー: http://***.***.***.***:1984/api/webrtc?dst=test3
"go2rtc"で設定したストリーム名を"test3"としたとき
***は配信先"go2rtc"が動いているPCのIPアドレスを入力して、
"OK"で設定完了"設定"ダイアログが閉じる。
!注意!ここは、配信先PCのIPアドレスを入力します。

まだ"配信開始"はクリックしない。(右下"コントロール"の"配信開始")
配信先PC(go2rtc)で、次の表示になっていることを確かめてから、
配信元PC"OBS Studio"の"配信開始"をクリックする。
"ソース無し"ダイアログ出るが、音声だけなので"はい"をクリック
"配信開始"ボタンが青色に変わって"配信終了"と表示される。

配信先PC(go2rtc)で、
右側"Commands"の下の"streams"をクリックする。

次ようなページに変わる。
ウインドウ右下の、スピーカーマークをクリックして、
ミュートを解除、音量を適当に上げておく。

配信元PC"OBS Studio"の"ソース"の下の方"+"をクリックして、配信するソースを設定します。
例では"音声出力キャプチャ"としています。(PCのスピーカーに出る音がソース入力されます。)
"ソースを作成/選択"は"OK"
"音声出力キャプチャのプロパティ"入力デバイスに合わせて設定、"既定"のままでも良いかも。

これで配信先PCから音声出力されるはずですが、
うまくいかない時は、
ブラウザの"戻る"ボタンで戻って"streams"をクリックしてみる。

コマンドプロンプトの"go2rtc"がメッセージを吐き出して止まっている時は再起動する。
"go2rtc"と入力し"Enter"キー押す。
"go2rtc"が止まれば"OBS Studio"も何らかのエラーで止まっている可能性あります。
メッセージのダイアログボックスを解除しておきます。

"go2rtc"側はブラウザの"戻る"ボタンで戻り、
ページを"リロード"して表示してから、"OBS Studio"の"配信開始"をクリックし、
もう一度"streams"をクリックしてみてください。

"OBS-Studio"の"配信開始"の前には、
"go2rtc"が起動して、"streams"クリック前であること。
です。

その他に、"サーバー接続できない"ときの確認することは
Windows設定で"ネットワークプロファイル"を"プライベート"にする。

つづくかも


bluetoothで音声を送る(Wi-Fiの可能性webrtc探る)

2024-09-11 20:30:25 | bluetooth-Audio

書きかけの投稿です。

ESP32-ROOM-32と I2S Microphonを使った、
音声入力デバイスから音声を送る方法を調べています。
調べていくうちに、"ESP32+I2S Mic ( INMP441 )"から脱線しつつありますが、
お付き合いください。
"なんとかというアプリケーションを使えば遅延を防止できる?!"掘り下げてみました。

結論のようなもの
OBSで配信して、go2rtcで受信音声再生する方法が良いと思いました。
ESP32+I2S Mic (INMP441)での配信はOBSに比べ遅延は少ないようですが、
音質にかなり改善の余地があります。
(遅延時間は計測していませんが、OBSで1秒程度でしょうか)


ネタとなったお困りごと:
音声を数百メートル離れた場所へ送りたい。

今回はWi-Fi&LANを使って送る方法について、調べて試してわかったことを書きます。
写真の接続に間違いがあります。L/R〜GNDの接続をL/R〜VDDに変更してください。

写真の接続に間違いがあります。L/R〜GNDの接続をL/R〜VDDに変更してください。

githubで見つけたスケッチ(使わせていただきます感謝)
"stream_i2s_wav_web.ino"
スケッチの説明
INMP441 ( I2S マイク) に入力した音声をWAV形式でオーディオをストリーミングする
ESP32ベースのWebサーバー例

オーディオ ストリームを聞くには
Wi-Fi SSID,PASSWORDを編集、次の行を探して"32"を"16"へ変更する必要がありました。
変更前(ノイズしか聞こえない)
#define SAMPLE_BITS 32 // Bits per sample of the audio
変更後(音質は悪いが音声が聞き取れる)
#define SAMPLE_BITS 16 // Bits per sample of the audio
ESP32へ書き込み、
シリアルモニタに出力されたIPアドレスをメモしておいて


・ブラウザでIPアドレスを直接開く
 音声の遅延4秒程度発生します。

・"go2rtc"というアプリケーションを介してブラウザで開く
 音声の遅延1秒以下

音質に改善の余地があります。

また、PCで"OBS Studio"というアプリケーションを使って配信して、
"go2rtc"で受信する方法もありました。
遅延は1秒以下でした。

OBS配信中

go2rtc受信画面

OBSの設定

go2rtcの設定と起動は別の記事で投稿します。
この方法での音質は良好です。
(遅延に関しては、bluetoothでも1秒以下の遅延があります。)

bluetoothで音声を送る(I2S MIC INMP441を試す)も見てください。



つづく


bluetoothで音声を送る(Wi-Fiの可能性も探る)

2024-08-02 10:48:56 | bluetooth-Audio

書きかけの投稿です。

ESP32-ROOM-32Eと I2S Microphonを使った、
音声入力デバイスから音声を送る方法を調べています。
今回はbluetooth以外の方法検討するため、Wi-FiでPCのブラウザへ送る方法を試します。
bluetoothで音声を送る(I2S MIC NMP441を試す)を一緒に見てください。

結論のようなもの
入力した音声が4秒程度遅延して出力されます。(bluetoothでも1秒以下遅延あり)
この遅延は"ブラウザがキャッシュするためにおきる"ので、
なんとかというアプリケーションを使えば防止できる?!(不正確な情報を含みます)
というような情報も見受けられました。その点は掘り下げていません。
気になったので掘り下げてみました。
"go2rtc"(webrtc)です。遅延は1秒以下ぐらいでした。まとまったら別の記事で投稿しようと思います。

ネタとなったお困りごと:
音声を数百メートル離れた場所へ送りたい。

ArduinoIDEの準備
ESP32のボードマネージャはインストールを済ませておいてください。
ライブラリはGitHubで"arduino-audio-tools"検索しダウンロード、
"ZIP形式のライブラリをインストール"します。

テストに使ったサンプルスケッチ
arduino-audio-tools/examples-communication/http-server/streams-i2s-webserver_wav.ino



スケッチの編集と書き込み
スケッチへSSID、passwordを編集してESP32へ書き込みます。
次の行を見つけてコメントに変更しておくと、シリアルモニタに表示されるIPアドレスが見やすいでしょう。
//AudioLogger::instance().begin(Serial, AudioLogger::Info);

シリアルモニタに表示されるIPアドレスをブラウザで開いて暫くすると
音声入力デバイスに入れた音声が再生されます。
ごめんなさい、投稿した画像はIPアドレスが一致していません。"シリアルモニタに表示されるIPアドレス"をブラウザに入力してください。



つづく


bluetoothで音声を送る(I2S MIC NMP441を試す)

2024-08-02 10:47:18 | bluetooth-Audio

かきかけの投稿です(気がついたことがあれば書き足します)

今回の投稿は
音声入力が確認できたサンプルスケッチをお知らせします。
I2SインターフェースmicrophoneのNMP441をESP32で使う時、
モジュール付属のオス-メスコネクタ付きケーブルを使ったらノイズで嵌る。


状況
"音声出力側"は出たので、次ステップの"音声入力側"を調べます。

音声の入力方法は
・MICで音声を直接入力
 アナログ
 デジタル
・別のAudio機器ライン出力から入力
などが考えられます。

MICアナログ
まずは以前購入しておいたMICを見つけ、ESP32のADCへ接続して試す・・・
歪みかノイズで聞き取りにくい。"改善の余地"はあるのかわからない。

MICデジタル、ラインデジタル
I2SインターフェースのAudio入力デバイス
I2S ADC(WM8782A)を見つけたがちょっと高い(Amazon¥2,932)
NMP441マイクモジュールI2Sインターフェース(Amazon¥599)を発注する。

ArduinoIDEの準備
ライブラリはGitHubで"ESP32-A2DP"と"arduino-audio-tools"検索しダウンロード、
"ZIP形式のライブラリをインストール"します。
サンプルスケッチは
arduino-audio-tools/examples/examples-communication/a2dp/basic-i2s-a2dp.ino
が使えました。

入力出力デバイスのbluetoothデバイス名を同じに設定します。
a2dp_sink.start("MyMusic");//Bluetooth出力デバイスのスケッチ抜粋
a2dp_source.start("MyMusic", ***);//入力デバイススケッチの抜粋

"MyMusic"が一致すればbluetooth音声出力デバイスと接続されます。

ピンヘッダ半田付け、ブレッドボード結線
画像を参考にしてください。
NMP441にコネクタ付きケーブルついていますが、使用はおすすめしません。
ノイズ(プチプチ雑音)が入ります。

結線図(下)
結線図にはありませんが、MIC電源ーGND間に1μFセラミックコンデンサを挿入しています。


途中ですが投稿します
つづく