デベロッパー・ティンカラー向け

音声配信を、
あなたのコードで。

OSTプロトコル、REST API、WebSocket、Prometheusメトリクス。オープンソースのネットワークオーディオ基盤を、あなたのプロジェクトに組み込もう。

5分でセットアップ

インストールして起動するだけ。設定ファイルは不要。

# インストール
curl -fsSL https://raw.githubusercontent.com/yukihamada/opensonic/main/web/install.sh | bash

# 送信ノードを起動
opensonic tx --port 4400

# 受信ノードを起動(別マシンから)
opensonic rx --connect 192.168.1.10:4400

# REST APIでステータス確認
curl http://localhost:4400/api/status | jq

# Prometheusメトリクス
curl http://localhost:4400/metrics

API エンドポイント

RESTful API と WebSocket で完全に制御可能。

GET
/api/status

ノードの状態、接続中のピア数、音声ストリームの統計情報を取得。

GET
/api/peers

接続中のピア一覧。各ピアのレイテンシ、帯域使用率、接続時間を含む。

POST
/api/stream/start

音声ストリームの開始。コーデック、ビットレート、チャンネル数を指定可能。

POST
/api/stream/stop

音声ストリームの停止。接続中のピアにも停止シグナルを伝播。

WS
/ws/audio

WebSocket経由のリアルタイム音声ストリーミング。ブラウザからの再生に対応。

GET
/metrics

Prometheus形式のメトリクス出力。Grafanaダッシュボードとの連携に最適。

アーキテクチャ

P2Pメッシュネットワーク上に構築されたモジュラー設計。

DJ Software
DAW
System Audio
Microphone
OSTP Protocol Layer
Audio Capture
P2P Mesh
Codec Engine
REST API
WebSocket
Prometheus
iPhone
Raspberry Pi
Browser
Smart Speaker

テクノロジースタック

🔌

OSTプロトコル

Open Sonic Transport Protocol。低遅延P2P音声ストリーミングのためのオープンプロトコル。

UDP P2P NAT Traversal
🔧

Rust コアエンジン

メモリ安全かつゼロコスト抽象化。リアルタイム音声処理に最適化されたコアエンジン。

Rust tokio cpal
📊

監視・可観測性

Prometheus メトリクス出力で、Grafanaダッシュボードとシームレスに連携。

Prometheus Grafana /metrics
🌐

Web Audio API

ブラウザからWebSocket経由で音声を受信・再生。追加プラグイン不要。

WebSocket Web Audio PCM
🔐

権利管理エンジン

音声フィンガープリントによる楽曲検出とロイヤリティ計算の自動化API。

Fingerprint Royalty API
📦

クロスプラットフォーム

macOS、iOS、Android、Linux、Raspberry Pi。あらゆるデバイスで動作。

Swift Kotlin ARM

WebSocket で音声を受信

わずか数行のJavaScriptで、ブラウザに音声再生機能を組み込める。

// WebSocket経由で音声ストリームを受信・再生
const ctx = new AudioContext({ sampleRate: 48000 });
const ws = new WebSocket('ws://localhost:4400/ws/audio');
ws.binaryType = 'arraybuffer';

ws.onmessage = (event) => {
  const pcm = new Float32Array(event.data);
  const buffer = ctx.createBuffer(2, pcm.length / 2, 48000);
  // デインターリーブしてチャンネルに分配
  const L = buffer.getChannelData(0);
  const R = buffer.getChannelData(1);
  for (let i = 0; i < L.length; i++) {
    L[i] = pcm[i * 2];
    R[i] = pcm[i * 2 + 1];
  }
  const src = ctx.createBufferSource();
  src.buffer = buffer;
  src.connect(ctx.destination);
  src.start();
};

今すぐダウンロード

すべてのプラットフォームに対応。MIT License。

💻
Mac (.pkg)
macOS 12以降
📱
iOS (TestFlight)
iPhone / iPad
🤖
Android (.apk)
Android 10以降
🌐
ブラウザ
ダッシュボード

オープンソースで、一緒に作ろう。

Solunaはコミュニティドリブン。Issues、PR、フォーク、なんでも歓迎。