トップページ⇒tech
64コメント18KB

★多対多の音声チャット★

■ このスレッドは過去ログ倉庫に格納されています
0001名無し@お腹いっぱい。NGNG
 多対多の音声チャット(同時に1000人くらいログインできるくらいの)
を実現してみたいのですが、普通にサーバ・クライアントシステムにすると
サーバ負荷の問題で自分では不可能なのかなぁと思ってます。
 そこで、(変な言い方かもしれませんが)各クライアント同士が音声情報を
通信しあうようなシステムならいけないか?と考えるようになりました。
僕自身あまりこの分野にくわしくない(はっきりいってドキュンレベル)なので
そういうことが可能なのかよくわかりません。
 こういうことって可能なのですか?
 また、すでにこういったシステムが実現されているのですか?
(自分で探してみた限りではみつかりませんでした) 
0014デフォルトの名無しさんNGNG
>>1
まあ、今ある音声通話機能つきチャットソフト(AIMとか、Yahoo
メッセンジャーとか)を使って、音声通話時のnetstatを見て、
いろいろ考えてみるのが良いかと。
0015デフォルトの名無しさんNGNG
>>9
NetMeetingの仕様はこうかいされてるだろ。
なんとかって規格だって聞いたことあるよ。
0016名無し@お腹いっぱい。NGNG
>>11、14、15

レスありがとうございます。やっぱり勉強不足でしたね。これから調べ
直してみたいと思います。PtoPで実現できるなら、かなりサーバ負荷が
へらせるはず。(・∀・) ヤター
0017デフォルトの名無しさんNGNG
>>1は電話の事かな?
0018デフォルトの名無しさんNGNG
>>16
PtoPでも良いことばかりじゃないんよ


とか言ってみるテスト
00191NGNG
>>17 電話というか、多対多の音声チャットができるコミュニティができたら
おもしろいな、と思いまして。

それから9、16は1です。
00201NGNG
>>18と、いいますと?

 (ただいま検索中)
0021デフォルトの名無しさんNGNG
多対多なら逆にクライアントサーバの方が有利じゃないのかな。
クライアント側が音声で多チャンネル使うと、大域使い切るでしょ?
サーバでミックスダウンすれば1チャンネルの通信で済む。
0022デフォルトの名無しさんNGNG
Net Meetingじゃだめなの?
0023仕様書無しさんNGNG
音声チャット多対多だと、
1.干渉する
2.聞き逃すことがある。
3.録音し難い
4.録音しても抽出するのが面倒
5.帯域設定の問題
6.声の質が似ていると誰が話したのか分からないことがある
7.マイクの感度調整が面倒である
などが上げられる。
00241NGNG
>>21
それだとサーバの転送量がたいへんなことになるような気がするのですが・・・
それくらいの転送量は覚悟しろ、ということですか?
00251NGNG
というか、Netmeetingでは1対1までしか音声チャットできないようですけど・・・。
やはり多対多では無理なのかなぁ?
0026デフォルトの名無しさんNGNG
結構前に、こんなの考えた。

参加者をリング状につないで、パケットをぐるぐる回す。
具体的には、前の人からパケットをもらったら、
・自分の音声を足す
・そのパケットに前周回で足した自分の音声が入っているなら、
 そのパケットから前周回で足した音声を引く
(位相が合ってれば、波形の足し引きでOKだよね?)
で、できたパケットを次の人に渡す。

参加人数が増えれば増えるほど、タイムラグが大きくなるけど、
これなら、一人当り2コネクションですむ。
でも、圧縮アルゴリズムとかちゃんと考えないと、すぐ共振しちゃいそうとか、
どこかがボトルネックに成ると音声が途切れちゃうとか、課題満載。
0027デフォルトの名無しさんNGNG
ふと思ったんだけど、C/SにしろP2Pにしろ
伝送遅延による、会話の不自然な間を
>>1はどのように解決するつもりなんだろう?
すごく難問だと思うんだけど。

というか、この擦れもう終わってるのか?
00281NGNG
>>27

いやー、正直まだ誰かレスしてくれるとは思っていなかったもので。
自分ではもうおわちゃったんだなぁ、と。

ちなみ、ただいま26さんの提言に基づいていろいろ試していこうとしています。
経過はできるだけ報告したいです。(それまでにこのスレが逝ってなければの話ですが。)
00291NGNG
 ちなみに、今のところ(はじめに1000人がログインできるくらいの)と
いいましたが、同時に20〜30人が会話できれば、とりあえずいいだろう、
ということにして、その範囲内で考えることにしています。
 具体的には、各クライアント(?)をリング状に配置して、
時計周り(?)、半時計周り(?)ー感覚的に理解できますよね?ーにパケット
をまわす、または網の目状にしてより高速にパケットがいきわたるような
アルゴリズムを考える、などが僕の構想です。
 さらにクライアントのリストをサーバが管理して、その時々に応じて、リアルタイムに
ベストのパケット伝送路を築く、というわけなんですが、・・・難しそうだなぁ(´ヘ`;)ハァ
0030デフォルトの名無しさんNGNG
20人くらいだと光ファイバ、最速CPUでサーバ立ててもダメ?
00311NGNG
>>30

言葉不足ですいませんでした。
20人くらい、というのは26さんの構想で、ひとつのリングに参加する人数のことです。
つまり、ひとつのサーバで複数のリングを管理して、トータルとして1000人クラスの
同時参加を実現しよう、という話です。
0032デフォルトの名無しさんNGNG
>>31
なるほど。かなり複雑で相当めんどくさそうだね。
オフ会開いて直接会話したほうが早いわw
0033デフォルトの名無しさんNGNG
なんか、見ててわくわくするスレッドです。1さん頑張って
0034デフォルトの名無しさんNGNG
個人的には実現を望む。
俺には1対1の同時音声チャットすら難しい…
だから>>1ががんばってくれるとありがたい
00351NGNG
>>32

そうですね、できるのかなぁ?ホントに、とは思うのですが、
(ドキュンな)僕にはやっぱりできそうに思えるので、やってみたいと思います。

皆さんどう思います?
00361NGNG
>>33,34

ありがとうございます!!
がんばります。
またそのうち皆さんに意見を伺うと思うので、そのときはよろしくお願いします。
0037デフォルトの名無しさんNGNG
ところで、1000人が一度にしゃべったらわけわからなくないか?
誰が誰に何を言ってるのか、サッパリだと思うのだが・・・
0038デフォルトの名無しさんNGNG
親サーバ(リング全体の管理)と子サーバ(各リングの管理)に分けて
子がリング内のデータをひとまとめにして親に渡す、くらいのノリでいいんじゃ
ないっすか?
それで追いつかなきゃ親子孫3代にわたって管理するよろし。OK?
0039デフォルトの名無しさんNGNG
ま、そのためには膨大な費用がかかるわけだが。
00401NGNG
>>36
 19でもいいましたが、僕はこのシステムを基盤にして、(2Dなり
3Dなりの仮想空間を用いて、コミュニティを築いていきたいと思っています。
 そして1000人が同時ログイン、と書きましが、1000人の人はそのコミュニティ
内で好きに動き回れるようにするつもりです。しかし、仮想空間、ですから空間的
な制限からせいぜい20〜30人くらいまでしか同時に会話することは無理になると思う
と思います。(というか無理にします。)
 1000人の人が同時に会話をするけれど、1−999、ということはありえない、そういう
状況設定をしっかりやっていくことで、その問題をクリアしたいと思っています。


 
00411NGNG
あ、なんか変なことをいってしまった。

でもいいたいことはわかりますよね?
00421NGNG
思うと思うって、・・・(;^▽^)はは
0043デフォルトの名無しさんNGNG
>>40
30人が同時にしゃべっても訳和歌ランクなりそうだが。。。
ようするにUOのボイス版が作りたいと。
0044デフォルトの名無しさんNGNG
30人が同時に参加しても、同時に2人話すような使い方はあんまり無さそうだけどね。
00451NGNG
>>42
まあそういうことです。

例えば現実世界で30人の人が会話をすることってまずないと思います。
だから、人の姿がキャラになったその手のコミュニティであっても、
それだけの人数が一度期にみんなで話す、ということは(多分)ない
と思います。30人というのはあくまで上限ということで。
0046デフォルトの名無しさんNGNG
>>40
それ俺も考えてた。来年から始めようと思ってた。いや、マジで。
んで、俺が考えてたのは、FPSみたいに3D空間を一人称画面で
歩き回って、3Dキャラに扮したユーザと会話する、みたいな感じ。
ある距離内の人間だけに聞こえればいいかな、と思った。だから、
距離計算とか誰に伝えるか、ってことだけをサーバが計算し、実
際の音声伝達はP2Pでいける、てな具合。
でも実装するには、3Dというだけでめんどくさいことがわかった。
壁とかドアでの音の伝わり具合、とか。マップ作ったりとか。
まあ、素人個人の俺では今はとうてい無理ということに気づいた
わけさ。
0047デフォルトの名無しさんNGNG
おい、>>1、出てこい!!!
004827NGNG
>>47
怒るな怒るな、>>1は、きっともう飽きたんだよ。
この擦れ立てたのも忘れたかもね。
0049デフォルトの名無しさんNGNG
全く偶然だけどおれも3D空間の会議室みたいな妄想してたよ。

物理的な制約がないから、直径10メートルくらいの球面の内側に
沢山人が座れて便利〜とか。
0050 NGNG
だから結局1対nなんだって。
普段の会話を考えてみろよ?
ヒッキーだから無理か。
0051フリーPGNGNG
5人ぐらいで充分なんだけど、
身近なところでも“多対多”を欲しがっている
クライアントがいくつかあるので、
ビジネスとしても充分成り立つかと。

自分で作ってるヒマないんで手をつけてないけど。
0052ひろ優子NGNG
まあ仮に実現したとしてもパソコンの前で一人で何かぶつぶつ言ってる姿は
人間として見られちゃいけないな
0053デフォルトの名無しさんNGNG
いきなりネットワークの話になっているが、
帯域と音声圧縮の形式はどうするんだ?

当然何度も合成すると言うことは、圧縮展開を繰り返すわけだから、
繰り返し圧縮しても劣化の少ない形式を用意する必要があるぞ
0054デフォルトの名無しさんNGNG
というか、ADPCM以外の圧縮方法は複数の人間が喋る音声では、とても実用にならない

携帯電話に向かって2人同時に喋ってみろ
0055デフォルトの名無しさん NGNG
>>54 はおいといて、ジークジオンとかやるの楽だろうな
0056デフォルトの名無しさんNGNG
なんか1に逃げられたのがすごくむかつく
0057デフォルトの名無しさんNGNG
おい、>>1、逃げるな!!!!!
0058某板某スレ554NGNG
>>23,>>27 超遅レス

C/S方式(サーバ上でミックスした声を各クライアントに配る方式)のパッケージを使っています。
ネットワークの遅延時間については、各クライアントからの音声に適当な遅延をかけて、同じ時間軸上に音声を並べる処理をしてるらしいのですが、全体の遅延時間が最も遅延の大きなクライアントによって決まるため、自分の声に超遅エコーが付いて難儀しています。

携帯電話のハンズフリーキットでは、スピーカ-マイク間の音の回りこみを抑制するために、100ms程度のエコー・キャンセラーICを使っていると聞きます。
音声チャットに適した、遅延時間の長いエコーを抑制する SW/HWってないんでしょうかねぇ?

 
0059デフォルトの名無しさんNGNG
誰か知らない?
0060デフォルトの名無しさんNGNG
>58
自分の発信した音声を一定時間保持しとい送る信号には
可聴域の外の周波数域に各ユーザ固有の目印信号を一定時間毎に
乗っけてそれを目印にしてエコーキャンセルできないかなぁ。
と言ってみるテスト。
0061デフォルトの名無しさんNGNG
age
0062デフォルトの名無しさんNGNG
>>58
正弦定理をつかって
単に位相を100msずらした値を
足すか引くかすればいいだけでわ?
と言ってみる...
0063デフォルトの名無しさんNGNG
某板で話題になってた
適応型フィルターの応用と思ったんだけど、
そーゆーレスはなかなか付かないですね
0064デフォルトの名無しさんNGNG
vb6.0で座標をピクチャーボックスの中心にもっていきたい場合は
どうしたらよろしいんでしょうか?
どなたか教えてください?
■ このスレッドは過去ログ倉庫に格納されています