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設定で"ネットワークプロファイル"を"プライベート"にする。

つづくかも


Raspberry Pi 5が届きました。(2号機を立ち上げる)

2024-09-12 17:14:05 | Single board computer

この投稿はあまりお役に立たちません。

2号機は Raspberry Pi OS 64Bit で使います。
HY works 的使い方では、32Bitより64Bitの方が問題点が少ないようなので
64BitでこのRaspi5をメインとして使い、Pi4Bからの作業環境移行を進めます。
(32BitでのArduino IDE 1.8.19のESP32 コンパイルエラーは未解決・・・致命的問題なので)
1号機はテスト用として、Raspbrry Pi OS 32Bitや
UbuntuやGEEKWORM X1002 NVMe SSD起動も試してみたいです。


つづくかもしれない。


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を試す)も見てください。



つづく


Raspberry Pi 5が届きました。(Rasberry Pi OS 32Bitを使ってみる)

2024-09-01 16:24:44 | Single board computer

この投稿は書きかけです。

Pi4BからPi5への移行がなかなか進みません。
結論
Pi5の現状は"問題を回避しながら64BitOSで使う"です。

"Pi5はRaspberry OS (64Bit)で使いたい"(8GBRAMモデルを買ったので)
やってみると、問題が出てきて
Raspberry Pi OS(64Bit)だけの問題なのか?確かめるために
32Bitを使ってみました。

ですが、32Bitでも問題改善されません。
32Bitだけで発生する問題点もありました。

調べていくうちに
Raspberry Pi OSがバージョンアップし"bullseye"から"bookworm"に・・・
Raspberry Pi 5は、"bookworm"から対応となる・・・
"bookworm"からウィンドウマネージャーが"Openbox"から"Wayland"に・・・
ディスプレイサーバが従来の"X11"から"Wayland"に変更・・・
など
OSの変更に起因しているのではとないかとの結論にいたりました。
ちなみにPi4B OSは
lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 11 (bullseye)
Release: 11
Codename: bullseye


"bullseye"でした。
Pi5の現状は"問題を回避しながら使う"です。
Pi5の速さを知ったらPi4Bには戻れないです。

気がついた変更点(64,32Bit)
・fcitx-mozc(日本語入力)が入っていない?・・・インストールして、設定すれば良い
・Chromium で日本語が入力できない・・・対応していない(?)という情報が見受けられました。
・webブラウザFirefoxが入っている・・・こちらは日本語入力OK
・KiCadが入っている

遭遇した問題点
・64,32Bit GIMP(画像編集アプリ)でスクリーンショットが撮れない
・32Bit Arduino IDEでESP32スケッチがコンパイルエラー・・・調査中
・Pi5動作中に、ディスプレイのみOFFーONすると、
 黒画面にマウスカーソルのみの表示になり、
 OFF前の画面に戻らないことがある。

アップデートで徐々に改善されることを期待しながら使わせていただきます。

つづく