ゼロさんの音ずれ補正ソフト応援サイト!?

民生DV(アンロックドオーディオ)機からのDVキャプチャにおける音ずれについて


デジタルビデオ(DV)が開発されてPCにDVデータがそのままキャプチャ出来るような時代になり、
1と0の世界でなぜにずれが存在するかと不思議に思われる方も多数いらっしゃると思います。
しかしながら、民生DVデッキ(アンロックドオーディオ)は記録こそデジタルですが、そのデジタルデータにある範囲のばらつきを認めてることが、PCにキャプチャした場合に音ずれとして現れてきてしまいます。
そこでそのずれが生じないようにデジタルデータを厳密に規格化されてるのが、DVCAM等の上位規格(ロックドオーディオ)となります。

DV-NTSC(SD)には音声サンプリング数として48KHzと44.1KHz、32KHzがありますがここでは話を簡単にするために48KHzの場合だけを取り上げます。

NTSCの1秒間のフレームレート29.97、音声サンプリング数48KHzというのは一般的に29.97フレーム、48000サンプルというのが基準です。
しかしながらこれは整数値で割り切れないためにカノープスの編集ソフト上では30フレームで48048サンプルという扱いになってます。
これはずばりDVCAM(ロックドオーディオ)のサンプル数と一致します。

そこで、
地上波(標準信号)をNV-DM1で録画した物をカノープスのDVキャプチャボードDVRaptorにて参照形式でキャプチャし、
そのAVIファイルを、ゼロさん作成の音ずれ補正ソフトでAVI情報を見ると、

---------------------------------------------
総フレーム数 = 3000 : 総サンプル数 = 4804688
サンプル数 = 48047 : サブチャンク数(累計) = 86
サンプル数 = 48046 : サブチャンク数(累計) = 13
サンプル数 = 48048 : サブチャンク数(累計) = 1

0:00:00:00 : 00000da0( 0002fc64 ) -- 48047
0:00:01:00 : 00030204( 0005f0c8 ) -- 48047
0:00:02:00 : 0005f668( 0008e52c ) -- 48047
0:00:03:00 : 0008eacc( 000bd990 ) -- 48047
0:00:04:00 : 000bdf30( 000ecdf4 ) -- 48047
0:00:05:00 : 000ed394( 0011c258 ) -- 48047
0:00:06:00 : 0011c7f8( 0014b6b8 ) -- 48046
0:00:07:00 : 0014bc58( 0017ab1c ) -- 48047
0:00:08:00 : 0017b0bc( 001a9f80 ) -- 48047
0:00:09:00 : 001aa520( 001d93e4 ) -- 48047
0:00:10:00 : 001d9984( 00208848 ) -- 48047
          ・
          ・
          ・
0:01:32:02 : 010fe164( 0112d028 ) -- 48047
0:01:33:02 : 0112d5c8( 0115c48c ) -- 48047
0:01:34:02 : 0115ca2c( 0118b8f0 ) -- 48047
0:01:35:02 : 0118be90( 011bad54 ) -- 48047
0:01:36:02 : 011bb2f4( 011ea1b4 ) -- 48046
0:01:37:02 : 011ea754( 0121961c ) -- 48048
0:01:38:02 : 01219bbc( 01248a7c ) -- 48046
0:01:39:02 : 0124901c( 01277ee0 ) -- 48047

---------------------------------------------
以上のようなAVIの情報が出力されます。

これはAVIファイルが30フレームを1サブチャンクとしてオーディオデータを格納してることを示していますが、その1サブチャンクに含まれるオーディオサンプル数がばらついているのがわかると思います。

キャプチャされたAVIの構造をよく見てみると、(バイナリレベルで見ないとわからないですが(^^;
AVIの映像部分にはDVストリームがそのままキャプチャされ、AVIの音声部分にはDVストリームから抜き出した音声データを30フレーム(サブチャンク)単位で順に格納していることがわかります。
サブチャンクに含まれるサンプル数が民生DVでのサンプル数変動を表してるのですが、この情報は通常AVIの読み出しでは全然考慮されませんので、AVI先頭からの連続データとして扱われます。
このときに音ずれとなって露呈してしまうわけです。
NV-DM1以外でも民生DV(アンロックドオーディオ)ではこのようにサンプル数が一定になりませんので、多かれ少なかれ音ずれが発生することとなります。

上の例は3000フレームのキャプチャをした場合ですが、3000フレームでの音声サンプリング数はカノープスの編集ソフト上では、ぴったし4804800サンプルにならないと映像と音声の長さが一致しません。
ということで、上の例では最後尾にて映像と112サンプル分ずれてることになります。(映像に対して音が112サンプル分早く聞こえる)
112サンプルは112/48048秒のずれですからAVIが短い場合は全く無視できるレベルですが、
このペースでずれていくと30000フレーム(約16分40秒)ではその10倍、
1112サンプル約0.7フレーム(1112/48048*30)のずれが発生、
300000フレーム(約2時間46分)では7フレームずれてしまうことになります。

ということで、この音ずれを修正するには
本来は48048サンプルでならないところが、アンロックドオーディオにより過不足が生じてしまったサンプル数を48048に補正してしまえばよいということになります。
それをソフト的に修正するのが、ゼロさん作成の音ずれ補正ソフトです。
上のDM1でキャプチャされたファイルは48047サンプルのフレームが多数存在しますが
これを48047→48048と変換(現行はリサンプリングではなくサンプルデータの捏造、及び補間)すると映像と音声の同期がとれた状態となります。
(厳密には、DVでは映像と音声の同期情報はありませんが、DVストリーム上の同期状態と同様になるということです)
早い話、ソフトウェアで、アンロックドオーディオ→ロックドオーディオ変換をしてるということになるかと思います。


この例は、先のキャプチャした物をそのままNV-DM1に書きだし、再度DVキャプチャしたものの結果です

---------------------------------------------
総フレーム数 = 3000 : 総サンプル数 = 4804800
サンプル数 = 48048 : サブチャンク数(累計) = 100

0:00:00:00 : 00000da0( 0002fc64 ) -- 48048
0:00:01:00 : 00030204( 0005f0c8 ) -- 48048
0:00:02:00 : 0005f668( 0008e52c ) -- 48048
0:00:03:00 : 0008eacc( 000bd990 ) -- 48048
0:00:04:00 : 000bdf30( 000ecdf4 ) -- 48048
0:00:05:00 : 000ed394( 0011c258 ) -- 48048
0:00:06:00 : 0011c7f8( 0014b6b8 ) -- 48048
0:00:07:00 : 0014bc58( 0017ab1c ) -- 48048
0:00:08:00 : 0017b0bc( 001a9f80 ) -- 48048
0:00:09:00 : 001aa520( 001d93e4 ) -- 48048
0:00:10:00 : 001d9984( 00208848 ) -- 48048
          ・
          ・
          ・
0:01:32:02 : 010fe164( 0112d028 ) -- 48048
0:01:33:02 : 0112d5c8( 0115c48c ) -- 48048
0:01:34:02 : 0115ca2c( 0118b8f0 ) -- 48048
0:01:35:02 : 0118be90( 011bad54 ) -- 48048
0:01:36:02 : 011bb2f4( 011ea1b4 ) -- 48048
0:01:37:02 : 011ea754( 0121961c ) -- 48048
0:01:38:02 : 01219bbc( 01248a7c ) -- 48048
0:01:39:02 : 0124901c( 01277ee0 ) -- 48048

---------------------------------------------
まるでDVCAM(ロックドオーディオ)からキャプチャしたかのように音声サンプリング数が48048で揃ってます。
しかし、ここで問題が発生します。
書きだしたファイルは最初のキャプチャした状態より112サンプル増えて4804800ピッタリになってますが、
ファイル後半部分は112サンプルの無音状態となります。
つまり、音声データは先頭に詰まった状態になって、後部の足りない部分を無音で埋めたという形になります。
(音声サンプリング数が多い場合はカットされます)
AVI上での扱い(先頭からの連続データ)のままDVストリームに再構築されて書き出されてることが確認できます。
こういう場合も音ずれのない状態で書き出しをしようと思えば、ゼロさん作成の音ずれ補正ソフト
ロックドオーディオ相当に補正しておく必要があります。


音ずれの発生を簡単なイメージで表すと以下のような感じになります。

映像と音声が同期している状態。(30フレーム=1サブチャンクあたりの音声サンプルを■■■■■■と簡略化しています。)
ロックドオーディオからのキャプチャ、もしくは一度書きだしたテープからの再キャプチャ
映像 nサブチャンク n+1サブチャンク n+2サブチャンク n+2サブチャンク n+3サブチャンク n+4サブチャンク n+5サブチャンク
音声 ■■■■■■ ■■■■■■ ■■■■■■ ■■■■■■ ■■■■■■ ■■■■■■ ■■■■■■

NV-DM1のようにサンプルが不足する場合。

=アンロックドオーディオによって標準より不足してしまったサンプル
DVストリーム上では音声サンプルが不足しても映像と音声データが同期して流れます
映像 nサブチャンク n+1サブチャンク n+2サブチャンク n+2サブチャンク n+3サブチャンク n+4サブチャンク n+5サブチャンク
音声 ■■■■■ ■■■■■■ ■■■■■ ■■■■■■ ■■■■■ ■■■■■ ■■■■■■
  キャプチャされたAVIでは不足サンプルは埋められず、音声データは先頭からの連続データとなり後半部分にいくに前に従ってずれる
映像 nサブチャンク n+1サブチャンク n+2サブチャンク n+2サブチャンク n+3サブチャンク n+4サブチャンク n+5サブチャンク
音声 ■■■■■ ■■■■■ ■■■■■■ ■■■■■■ ■■■■■■ ■■■■■■ ■■■■■■
  ゼロさん作成の音ずれ補正ソフトで処理すると不足サンプルが埋められ映像と音声の同期が復活です!
映像 nサブチャンク n+1サブチャンク n+2サブチャンク n+2サブチャンク n+3サブチャンク n+4サブチャンク n+5サブチャンク
音声 ■■■■■ ■■■■■■ ■■■■■ ■■■■■■ ■■■■■ ■■■■■ ■■■■■■

WV-DRx系のようにサンプルが多い場合。

=アンロックドオーディオによって標準より多くなってしまったサンプル
DVストリーム上では音声サンプルが多くなっても映像と音声データが同期して流れます
映像 nサブチャンク n+1サブチャンク n+2サブチャンク n+2サブチャンク n+3サブチャンク n+4サブチャンク n+5サブチャンク
音声 ■■■■■■ ■■■■■■ ■■■■■■ ■■■■■■ ■■■■■■ ■■■■■■ ■■■■■■
キャプチャされたAVIでは多いサンプルはそのまま、音声データは先頭からの連続データとなり後半部分にいくに従って後ろにずれる
映像 nサブチャンク n+1サブチャンク n+2サブチャンク n+2サブチャンク n+3サブチャンク n+4サブチャンク n+5サブチャンク
音声 ■■■■■■ ■■■■■ ■■■■ ■■■■■■ ■■■■■ ■■■■■■ ■■■■■
ゼロさん作成の音ずれ補正ソフトで処理すると多いサンプルが削られ映像と音声の同期が復活です!
映像 nサブチャンク n+1サブチャンク n+2サブチャンク n+2サブチャンク n+3サブチャンク n+4サブチャンク n+5サブチャンク
音声 ■■■■■■ ■■■■■■ ■■■■■■ ■■■■■■ ■■■■■■ ■■■■■■ ■■■■■■

(*注)
上の図では
30フレーム=1サブチャンク内の過不足データを最後尾でつじつま合わせをしているように見えますが、実際の補正処理では、1サブチャンクの音声データを”補正するサンプル数+1”ブロックに分けて、各ブロック(最後のブロックは除く)の最後尾の1サンプルを処理対象とします。
つまり
48047サンプル→48048サンプルに補正の場合は、補正サンプル数は1なので
1〜24023、24024〜48047の2ブロックに分け、24023と24024の間に1サンプル補間して1〜48048の48048サンプルとします。
48046サンプル→48048サンプルに補正の場合は、補正サンプル数は2なので
1〜16015、16016〜32030、32031〜48046の3ブロックに分け、16015と16016の間と、32030と32031の間に1サンプル補間して1〜48048の48048サンプルとします。
逆に
48049サンプル→48048サンプルに補正の場合は、
1〜24024、24025〜48049の2ブロックに分け、24024番目サンプルをカットして1〜48048の48048サンプルとします。
48050サンプル→48048サンプルに補正の場合は、
1〜16015、16016〜32030、32031〜48046の3ブロックに分け、16015、32030サンプルをカットして1〜48048の48048サンプルとします。
補正の最大値は±7000まで可能ですので、相当大きなずれでも問題なく補正可能です。


謎のQ&A

* 1時間で2フレーム前後であれば問題ないような気もするんですが?
ずれを感じなければ補正する必要はありません。ずれが大きくなった場合(5フレーム以上?)には誰でも体感できるので補正しておいた方がよいでしょう。
また、通常は全体が一様にずれていくだけですが、不安定な信号などでは突発的にサンプル数が異常な数値になり予想以上に大幅にずれる場合があります。こんな場合でも完璧に補正できます。
* PCを介したコピーはDVデッキ同士のコピーと同じにはならないのですか?
厳密にいえばDVストリームをそのまま扱わない限りDVデッキのコピーと同じにはなりません。ですから、キャプチャで音声データが一度WAVとして扱われることで映像と音声の同期が崩れデッキ同士のコピーと同じにはなりません。一度PCから書きだしたものからのコピーでは読み書きエラーがない限り同じになります。
カノープスの以前のバージョンのソフトでは、AVIのDVストリーム部分がそのまま書き出せる(AVIの音声データを使わない)ことが出来たみたいです。
* 録画されたデッキと違うデッキで再生した場合はどうなりますか?
音声サンプル数は記録時のハード(ロックドオーディオ、アンロックドオーディオ)により決定しますので、再生機側での機種差はエラーレートを除いて同一の結果となります。
* キャプチャ直後のAVIをRaptorEDITやRaptorVIDEOで変則再生にしたときに聞こえる音声はずれていないようなのですが?
これはAVIの映像部分にあるDVストリームの音声データを再生してますのでずれません。通常再生はAVIの音声データの再生ですので音ずれが発生してる場合はずれて聞こえる場合があります。
* AVIを再圧縮後の映像部分のDVストリームデータはどうなりますか?
映像データ以外は消えてしまいます。日付等データは「No Information」、音声データ領域はすべてゼロクリアとなります。
* キャプチャ時に赤い「+SC」がでるのですが?
キャプチャ時にリサンプリングされているという表示です。48KHzでキャプチャしようとした場合、最初の得られたサンプリングデータ数が規定の範囲を超えているとリサンプリングでキャプチャされます。しかしながら48048サンプルになるわけではないのでずれまくりです。
キャプチャ途中に48KHzから32KHzに変更された場合も「+SC」表示が出ます。
* 29.97フレーム48000サンプルと、30フレーム48048サンプルは微妙に違いますが?
1時間で0.1フレーム程の誤差がでますが、そこまでは気にしないことにしませぅ(^^;
* 補正後にぷちっと聞こえる箇所が?
気のせいです(爆)
現行補正方式では正弦波等ではぷちっが出ることが確認されてますが(スペクトラムアナライザーで目視できます
通常音声でも聞こえてしまった場合は、、、ゼロさんどうしましょ?(^^;
* リサンプリングはいつ実装されるのですか?
というわけで、ゼロさんにいっぱい要望として出しませぅ(^^)/

APPENDIX 1

各種民生DV機器のカノープスDVキャプチャ(3000フレーム)によるオーディオサンプリング数の傾向と対策?
(各掲示板でのデータを参考にさせていただいています)

ソース 地上波(標準信号) 偏差 1時間当たりのずれの量
NV-DV10000その1 4804797 -3 0.07フレーム
WV-D9000その1 4804788 -12 0.27フレーム
NV-DV10000その2 4804815 +15 0.33フレーム
NV-HDD1-S 4804815 +15 0.33フレーム
DMAC-DA2 4804782 -18 0.40フレーム
WV-D9000その2 4804771 -29 0.65フレーム
WV-D9000その3 4804767 -33 0.74フレーム
DHR-1000その1 4804765 -35 0.79フレーム
DCR-PC120 4804763 -37 0.83フレーム
DCR-TRV10 4804852 +52 1.17フレーム
DHR-1000その2 4804872 +72 1.62フレーム
WV-DR7その1 4804874 +74 1.66フレーム
WV-DR7その2 4804877 +77 1.73フレーム
WV-DR7その3 4804881 +81 1.82フレーム
NV-DM1その1 4804702 -98 2.20フレーム
NV-DM1その2 4804685 -115 2.58フレーム
NV-DM1その3 4804607 -193 4.33フレーム
GV-D800 4804600 -200 4.49フレーム

APPENDIX 2

入力信号による差

ソース 地上波(標準信号) CS(DST-D900) SVHS(HR-X5) SVHS(SX200 β(EDV-9000)
NV-DM1 (-119) 4804681 (-89) 4804711 (-114) 4804686 (-106) 4804694 (+295) 4805095
GV-D800 (-200) 4804600 (-170) 4804630 (-195) 4804605   (+215) 4805015

アンロックドオーディオという名の通り、入力信号のフレームレートの微妙な違いが音声サンプリング数の相違として出ています。
つまり、映像フレームレートと音声サンプリングクロックが完全に別であることがわかります。
これが完全に同期していて一定のサンプル数になるのがロックドオーディオです。


APPENDIX 3

カノープスのDVキャプチャの設定の中に
CanonAudio= 
がありますが、これの設定値の変化はどのような挙動をするか、いくつかの設定値でのサンプル数の変化を調べてみました。
NV-DM1から”CanonAudio=”の設定値を変えて書きだしたテープからの再キャプチャ(3000フレーム)における音声サンプル数です。

テープ出力時の設定 設定なし CanonAudio=0 CanonAudio=1 CanonAudio=2 CanonAudio=3
キャプチャ時、設定なし 4804800 4804800 4804700 4804899 4804800
キャプチャ時、CanonAudio=0 4804800 4804800 4804700 4804899 4804800
キャプチャ時、CanonAudio=1 4804800 4804800 4804700 4804899 4804800
キャプチャ時、CanonAudio=2 4804800 4804800 4804700 4804899 4804800
キャプチャ時、CanonAudio=3 4804800 4804800 4804700 4804899 4804800

この設定で音ずれは軽減されるとのことですが、DM1やD800程度のずれでは感知されないようです。



last updated 2001/11/16
by sentaro