14歳の自分に衝撃の事実を告げてください

コーデックの文章で以下の内容がどうしても理解できなかったので質問させていただきます。
「アナログ信号が、G711コーデックを使用してデジタル化された場合、20msの音声は160サンプル、8ビットから構成される。その結果は、160バイトの音声情報となる。G.729コーデックでエンコードされた場合、20msの音声は160サンプルで構成され、10サンプルが1つのグループとして10ビットのコードワードで表される。その結果は、160ビット(20バイト)の音声情報となる。」
「G.729コーデック(8kbps)の純粋な音声帯域幅はIPパケット全体のために3倍になる必要がある。しかし、この合計はまだ帯域幅の最終必要量ではなく、Layer2オーバヘッドを含まれていない。Layer2オーバヘッドなしでは、G.729は24Kbpsが必要となる。G.711ではLayer2オーバヘッドなしでは、80kbpsが必要となる。」

(1)エンコードされた場合、20msの音声は160サンプルで構成される。その結果は、160バイトの音声情報となるとありますが、どのように計算すればこのように求められるのでしょか?
(2)10サンプルを1つのグループとし、10ビットのコードワードで表されるとは、どういう意味なのでしょうか?また、160ビット(20バイト)とはどのように計算すれば求められるのでしょうか?
(3)Layer2オーバヘッドなしでは、G.729は24Kbpsの帯域幅が必要となるとありますが、24kbpsとは8kbpsの3倍という意味でよろしいのでしょうか?また、24Kbpsという値に何か根拠はあるのでしょうか?また、G.711ではLayer2オーバヘッドなしで、80kbpsが必要とありますが、どのような計算で求めれられるのでしょうか?

初歩的な質問ばかりですが、皆様のお知恵を拝借願います。よろしくお願いします。

A 回答 (4件)

またまた#1です。



1s=1000msですよね。1000/20というのは、1秒間あたりのデータレートを求めたかったので、20msあたり160bitの場合、1000msあたり○bitなのか求めるには、
20:160=1000:○ ⇔ ○=160×1000÷20  ということです。

帯域幅というのは、本来、周波数に使われる(単位がHz)ものだと思いますが、デジタルでのデータのやり取りでは、単位時間にやり取りされるデータ量のことを指す場合もあります。混同しやすいですが、これはサンプリングやスイッチングの周波数をこのデータ量が内包していることに由来するのでしょう。
ですので、#2での8Kbpsというのは、質問文からすると帯域幅に相当しますが、きちんと基礎からデータ通信を学ぶ際には違う表現(ビットレート)になると思います。

ついでに、私の浅い知識で(3)の一部を回答しますと、
G.729を使用してのVoIP通信では、20ms分のデータを1パケットとして扱う(それ以上だと遅延を起こしやすくなるようです)ようですが、これには20ms分の音声20バイトにくわえ、通信先、通信元、大きさなどのパケットに関する情報が加わります。他にも通信手段などの情報も加わります。これらのことを情報ヘッダといいますが、今回の場合IP(パケット情報)、UDP、RTP(通信情報)が加わります。
今回、IPヘッダが20バイト、UDPヘッダは8バイト、RTPヘッダは12バイトになりますので、音声のデータ(音声ベイロード)20バイトと合わせて、音声データの3倍の60バイトになります。これをビットに直すと480ビットです。
それで1秒間にどれだけのデータを転送するかを求めると、
20:480=1000:○ → 480×1000÷20=24000
1K=1000とすると、24Kbps ということになります。
というわけで、ただ単に3倍、というわけではありません。

あまり詳しくないので、今回の説明では、G.729とG.729Annex Aを混同してしまっている部分はありますが、Layer2ヘッダのオーバヘッドがなければ同じだと思いますので・・・

同様にして、G.711の場合は、20ms分1パケットあたり、160バイトの音声と合計40バイトの情報ヘッダで構成されるので、
200バイト=1600ビットですので、
20:1600=1000:○ → 1600×1000÷20=80000=80K → 80Kbps
となります。

これは、どちらかというと、音声のコーデックというより、携帯電話やIP電話の通信部分になると思います。他のカテゴリーで質問名を変えて再度質問したほうが、よりよい回答をいただけるかもしれませんよ。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。おかげさまで助かりました。わかりやすい説明で理解することができました。

お礼日時:2008/02/26 20:14

えっと....


20ms 分のデータが 160ビットになるわけでしょ? じゃあ, 1s 分のデータは何ビットになりますか?

この回答への補足

1ms=1/1000sだから20msだと20ms=20/1000s=1/50s。50倍すると1sだから160ビットも50倍の8000ビット=8kビットとなるという感じでしょうか。

補足日時:2008/02/26 18:29
    • good
    • 0

すいません、#1です。



以下が、ビットとバイトが逆でした。#1の(2)以降は無視してください。
正しくは、

(2)10個のサンプルを1つのグループとして、1つ10ビットの情報に変換するということですので、20msの160個のサンプルが変換され、16個のサンプルになるわけです。このとき、新たなサンプルの情報は10ビットであらわされるので、
16×10=160(ビット)、160÷8=20(バイト)
となります。
ここから20ms、160ビットの情報は、1K=1000としたとき、1秒あたりの情報量は、
160×(1000÷20)=8000(ビット)、8000÷1000=8(Kビット)→8Kbps
となります。

すいません。

この回答への補足

ご回答ありがとうございます。解説いただいた部分の「ここから20ms、160ビットの情報は、1K=1000としたとき、1秒あたりの情報量は、160×(1000÷20)=8000(ビット)、8000÷1000=8(Kビット)→8Kbpsとなります。」についてですが、1000/20とは何を意味しているのでしょうか?また、8kbpsとは帯域幅のことを指しているのでしょうか?再度質問して申し訳ありませんが、ご教授お願いします。

補足日時:2008/02/26 15:38
    • good
    • 0

こんにちは


あまり詳しくないので、(1)(2)だけ。

(1)1バイト=8ビット、ですよね。20msの間に160個のサンプルを8ビットの情報で記録するということですので、その情報総量は、
160×8=1280(ビット)、1280÷8=160(バイト)

(2)10個のサンプルを1つのグループとして、1つ10ビットの情報に変換するということですので、20msの160個のサンプルが変換され、16個のサンプルになるわけです。このとき、新たなサンプルの情報は10ビットであらわされるので、
16×10=160(バイト)、160÷8=20(ビット)
となります。
ここから20ms、160バイトの情報は、1K=1000としたとき、1秒間の情報量は、
160×(1000÷20)=8000(バイト)、8000÷1000=8(Kバイト)→8Kbps
となります。

通信関係は全く詳しくないので・・・
基本だけを、ということで。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報