2017-12-22 57 views
-1

NAudioとAdobe Media Encoder(別途)を使用して、2時間のMP3ファイルをWAVファイルに変換しています。WAVファイルがソースMP3ファイルと同期していません

MP3秒#996 = WAV秒#1000

MP3秒#1991 = WAV秒#2000

グーグル:

たWAVファイルは、元のMP3ファイルと同期していませんSpeech APIでは、WAVファイルでタイムコード付きのトランスクリプトを作成する必要がありますが、タイムコードはMP3ファイル(ポッドキャスト)では正確ではありません。

すべてのポッドキャストで使用されているので、私はソースフォーマットとしてMP3を使用する必要があります。

ソースMP3ファイルと同期しているWAVファイルを作成するにはどうすればよいですか?

答えて

0

これは同期していないことをどのように知っていますか? MP3を再生するためのコーデックとWAVに変換するためのコーデックは同じことです。あるいは、たとえそれらが異なる実装であっても、決定論的に同じ出力を持つべきです。

時間は同じだと思うが、オーディオをプレビューするときにMP3ファイルを探していると思う。

MP3ファイルにはタイムスタンプがありません。最初にシークポイントまでデコードすることなく、確実にシークすることはできません。ほとんどのプレーヤーは、ファイルのバイト長に基づいて再生を開始するファイルの場所と、最初の2つのフレームに基づいて概算された全体的なビットレートを推定します。 CBRの場合、これは0.5秒程度で正確です。 VBRの場合、それは膨大な量になる可能性があります。

これは、生のMP3がストリーミング以外のものに悪い理由の1つです。 MP3はこの問題を解決するMatroskaなどの他のコンテナ形式で使用できます。残念ながら、ポッドキャスターはこれをしません。

基本的には問題の解決策はありませんが、リスナーが単にスキップしてリアルタイムでポッドキャストを再生しても問題はありません。

+0

2番目の#2000でMP3ファイルで発生するオーディオは、2番目の#2000までWAVファイルでは発生しないため、同期がとれていません。したがって、Google Speech APIがWAVファイルから作成したタイムスタンプは、ポッドキャストのMP3ファイルと一致しません。 – Tester

+0

@TesterどのようにしてMP3ファイルの1,991文字目を取得できますか?オーディオプレーヤーを使用して先にスキップしましたか、それともそのポイントまで完全に再生されましたか? – Brad

+0

特定の時間から再生するには、オーディオオブジェクトの「currentTime」プロパティをjavascriptで設定します:https://www.w3schools.com/tags/av_prop_currenttime.asp – Tester

関連する問題