オーディオデータセットの完全ガイド

'Complete Guide to Audio Dataset'

イントロダクション

🤗 Datasetsは、あらゆるドメインのデータセットをダウンロードして準備するためのオープンソースライブラリです。そのミニマリスティックなAPIにより、ユーザーはたった1行のPythonコードでデータセットをダウンロードして準備することができます。効率的な前処理を可能にするための一連の関数も提供されています。利用可能なデータセットの数は類を見ないものであり、ダウンロードできる最も人気のある機械学習データセットがすべて揃っています。

さらに、🤗 Datasetsにはオーディオ特化の機能も備わっており、研究者や実践者にとってもオーディオデータセットの取り扱いを容易にするものです。このブログでは、これらの機能をデモンストレーションし、なぜ🤗 Datasetsがオーディオデータセットのダウンロードと準備のためのベストな場所なのかをご紹介します。

目次

  1. The Hub
  2. オーディオデータセットのロード
  3. ロードが簡単、処理も簡単
  4. ストリーミングモード:銀の弾丸
  5. The Hubのオーディオデータセットのツアー
  6. まとめ

The Hub

The Hugging Face Hubは、モデル、データセット、デモをホストするプラットフォームであり、すべてがオープンソースで公開されています。さまざまなドメイン、タスク、言語にわたるオーディオデータセットの成長するコレクションがあります。🤗 Datasetsとの緊密な統合により、Hubのすべてのデータセットを1行のコードでダウンロードすることができます。

Hubに移動して、タスクでデータセットをフィルタリングしましょう:

  • Hubの音声認識データセット
  • Hubのオーディオ分類データセット

執筆時点では、Hubには77の音声認識データセットと28のオーディオ分類データセットがあり、これらの数は増え続けています。必要に応じてこれらのデータセットのいずれかを選択できます。最初の音声認識の結果を確認してみましょう。 common_voiceをクリックすると、データセットのカードが表示されます:

ここでは、データセットに関する追加情報を見ることができ、データセットでトレーニングされたモデルを確認したり、実際の音声サンプルを聴くことができます。データセットプレビューは、データセットカードの中央に表示されます。それにより、各サブセットとスプリットの最初の100のサンプルを表示します。さらに、オーディオサンプルがリアルタイムで再生できるようにロードされています。最初のサンプルの再生ボタンを押すと、オーディオを聴くことができ、対応するテキストを確認することができます。

データセットプレビューは、データセットを使用する前にオーディオデータセットを体験する素晴らしい方法です。Hubの任意のデータセットを選択し、サンプルをスクロールして異なるサブセットとスプリットのオーディオを聴くことができます。それにより、自分のニーズに合った正しいデータセットかどうかを判断することができます。データセットを選択したら、データをロードして使用を開始するのは非常に簡単です。

オーディオデータセットのロード

🤗 Datasetsの最も重要な特徴の1つは、たった1行のPythonコードでデータセットをダウンロードして準備することができることです。これはload_dataset関数によって可能になります。従来のデータセットのロードには、i) 生データのダウンロード、ii) 圧縮形式からの解凍、iii) 個々のサンプルとスプリットの準備といった作業が必要でしたが、load_datasetを使用することで、すべての重い作業を裏で行うことができます。

Speech ColabからGigaSpeechデータセットをロードする例を見てみましょう。GigaSpeechは比較的新しい音声認識データセットであり、学術的な音声システムのベンチマークとして使用されます。Hugging Face Hubには多くのオーディオデータセットがあります。

GigaSpeechデータセットをロードするには、単にHub上のデータセットの識別子(speechcolab/gigaspeech)をload_dataset関数に指定します。GigaSpeechには、xs(10時間)からxl(10,000時間)までの5つのサイズの設定があります。このチュートリアルでは、最小の設定をロードします。データセットの識別子と必要な設定のみが必要です:

from datasets import load_dataset

gigaspeech = load_dataset("speechcolab/gigaspeech", "xs")

print(gigaspeech)

出力結果:

DatasetDict({
    train: Dataset({
        features: ['segment_id', 'speaker', 'text', 'audio', 'begin_time', 'end_time', 'audio_id', 'title', 'url', 'source', 'category', 'original_full_path'],
        num_rows: 9389
    })
    validation: Dataset({
        features: ['segment_id', 'speaker', 'text', 'audio', 'begin_time', 'end_time', 'audio_id', 'title', 'url', 'source', 'category', 'original_full_path'],
        num_rows: 6750
    })
    test: Dataset({
        features: ['segment_id', 'speaker', 'text', 'audio', 'begin_time', 'end_time', 'audio_id', 'title', 'url', 'source', 'category', 'original_full_path'],
        num_rows: 25619
    })
})

こうして、GigaSpeechデータセットが準備できました!オーディオデータセットをロードするもっとも簡単な方法はありません。トレーニング、バリデーション、テストの分割が事前にパーティションされており、それぞれの情報が含まれています。

load_dataset関数によって返されるgigaspeechオブジェクトはDatasetDictです。これは通常のPythonの辞書と同じように扱うことができます。トレーニングセットを取得するには、gigaspeech辞書に対して対応するキーを渡します:

print(gigaspeech["train"])

出力結果:

Dataset({
    features: ['segment_id', 'speaker', 'text', 'audio', 'begin_time', 'end_time', 'audio_id', 'title', 'url', 'source', 'category', 'original_full_path'],
    num_rows: 9389
})

これはトレーニングセットのデータを含むDatasetオブジェクトを返します。さらに深く掘り下げて、分割の最初のアイテムを取得することもできます。これも通常のPythonのインデックスを使って可能です:

print(gigaspeech["train"][0])

出力結果:

{'segment_id': 'YOU0000000315_S0000660',
 'speaker': 'N/A', 
 'text': "AS THEY'RE LEAVING <COMMA> CAN KASH PULL ZAHRA ASIDE REALLY QUICKLY <QUESTIONMARK>", 
 'audio': {'path': '/home/sanchit_huggingface_co/.cache/huggingface/datasets/downloads/extracted/7f8541f130925e9b2af7d37256f2f61f9d6ff21bf4a94f7c1a3803ec648d7d79/xs_chunks_0000/YOU0000000315_S0000660.wav', 
           'array': array([0.0005188 , 0.00085449, 0.00012207, ..., 0.00125122, 0.00076294,
       0.00036621], dtype=float32), 
           'sampling_rate': 16000
           }, 
 'begin_time': 2941.889892578125, 
 'end_time': 2945.070068359375, 
 'audio_id': 'YOU0000000315', 
 'title': 'Return to Vasselheim | Critical Role: VOX MACHINA | Episode 43', 
 'url': 'https://www.youtube.com/watch?v=zr2n1fLVasU', 
 'source': 2, 
 'category': 24, 
 'original_full_path': 'audio/youtube/P0004/YOU0000000315.opus',
 }

トレーニングセットには、segment_idspeakertextaudioなど、いくつかのフィーチャが返されます。音声認識では、textaudioの列に関心があります。

🤗 Datasetsのremove_columnsメソッドを使用すると、音声認識に必要ないデータセットのフィーチャを削除することができます:

COLUMNS_TO_KEEP = ["text", "audio"]
all_columns = gigaspeech["train"].column_names
columns_to_remove = set(all_columns) - set(COLUMNS_TO_KEEP)

gigaspeech = gigaspeech.remove_columns(columns_to_remove)

成功していることを確認しましょう。 textaudio の列が正しく保持されているかを:

print(gigaspeech["train"][0])

出力結果:

{'text': "AS THEY'RE LEAVING <COMMA> CAN KASH PULL ZAHRA ASIDE REALLY QUICKLY <QUESTIONMARK>", 
 'audio': {'path': '/home/sanchit_huggingface_co/.cache/huggingface/datasets/downloads/extracted/7f8541f130925e9b2af7d37256f2f61f9d6ff21bf4a94f7c1a3803ec648d7d79/xs_chunks_0000/YOU0000000315_S0000660.wav', 
           'array': array([0.0005188 , 0.00085449, 0.00012207, ..., 0.00125122, 0.00076294,
       0.00036621], dtype=float32), 
           'sampling_rate': 16000}}

素晴らしい!必要な2つの列 textaudio を取得できました。 text はサンプルの転写文字列であり、 audio はサンプリングレート16KHzでの振幅値の1次元配列です。これでデータセットがロードされました!

簡単にロードし、簡単に処理する

🤗 Datasetsを使用してデータセットをロードすることは半分の楽しみです。モデルのトレーニングまたは推論のためにデータを効率的に前処理するために使用できるツールのスイートを使用できます。このセクションでは、データの前処理を3つのステージで実行します:

  1. オーディオデータのリサンプリング
  2. 前処理関数
  3. フィルタリング関数

1. オーディオデータのリサンプリング

load_dataset 関数は、オーディオサンプルを公開時のサンプリングレートで準備します。これは、モデルが予期するサンプリングレートとは常に一致しません。この場合、オーディオを正しいサンプリングレートにリサンプリングする必要があります。

🤗 Datasetsの cast_column メソッドを使用して、オーディオ入力を希望のサンプリングレートに設定できます。この操作はオーディオを直接変更せず、ロードされる際に datasets にオーディオサンプルをリサンプルするようにシグナルを送ります。次のコードセルでは、サンプリングレートを8kHzに設定します:

from datasets import Audio

gigaspeech = gigaspeech.cast_column("audio", Audio(sampling_rate=8000))

GigaSpeechデータセットの最初のオーディオサンプルを再ロードすると、指定したサンプリングレートにリサンプリングされます:

print(gigaspeech["train"][0])

出力結果:

{'text': "AS THEY'RE LEAVING <COMMA> CAN KASH PULL ZAHRA ASIDE REALLY QUICKLY <QUESTIONMARK>", 
 'audio': {'path': '/home/sanchit_huggingface_co/.cache/huggingface/datasets/downloads/extracted/7f8541f130925e9b2af7d37256f2f61f9d6ff21bf4a94f7c1a3803ec648d7d79/xs_chunks_0000/YOU0000000315_S0000660.wav', 
           'array': array([ 0.00046338,  0.00034808, -0.00086153, ...,  0.00099299,
        0.00083484,  0.00080221], dtype=float32), 
           'sampling_rate': 8000}
 }

サンプリングレートが8kHzにダウンサンプリングされたことがわかります。配列の値も異なります。以前は2つの振幅値ごとにほぼ1つの振幅値しか持っていませんでした。データセットのサンプリングレートをほとんどの音声認識モデルが期待する16kHzに設定しましょう:

gigaspeech = gigaspeech.cast_column("audio", Audio(sampling_rate=16000))

print(gigaspeech["train"][0])

出力結果:

{'text': "AS THEY'RE LEAVING <COMMA> CAN KASH PULL ZAHRA ASIDE REALLY QUICKLY <QUESTIONMARK>", 
 'audio': {'path': '/home/sanchit_huggingface_co/.cache/huggingface/datasets/downloads/extracted/7f8541f130925e9b2af7d37256f2f61f9d6ff21bf4a94f7c1a3803ec648d7d79/xs_chunks_0000/YOU0000000315_S0000660.wav', 
           'array': array([0.0005188 , 0.00085449, 0.00012207, ..., 0.00125122, 0.00076294,
       0.00036621], dtype=float32), 
           'sampling_rate': 16000}
 }

簡単! cast_column は、オーディオデータセットを必要なときに簡単にリサンプリングするための直感的なメカニズムを提供します。

2. 前処理関数

オーディオデータセットを扱う上で最も困難な側面の1つは、モデルに適した形式でデータを準備することです。🤗 Datasets の map メソッドを使用して、データセットの単一のサンプルを前処理する関数を作成し、コードの変更なしですべてのサンプルに適用することができます。

まず、🤗 Transformers からプロセッサオブジェクトを読み込みます。このプロセッサは、オーディオを入力特徴量に前処理し、ターゲットテキストをラベルにトークン化します。 AutoProcessor クラスは、指定したモデルチェックポイントからプロセッサを読み込むために使用されます。この例では、OpenAI の Whisper VoAGI.en チェックポイントからプロセッサを読み込んでいますが、Hugging Face Hub 上の任意のモデル識別子に変更することもできます:

from transformers import AutoProcessor

processor = AutoProcessor.from_pretrained("openai/whisper-VoAGI.en")

素晴らしいです!これで、単一のトレーニングサンプルを取り、processor を介してモデルのために準備する関数を作成できます。また、各オーディオサンプルの入力長さも計算し、次のデータ準備ステップで必要になります:

def prepare_dataset(batch):
    audio = batch["audio"]
    batch = processor(audio["array"], sampling_rate=audio["sampling_rate"], text=batch["text"])
    
    batch["input_length"] = len(audio["array"]) / audio["sampling_rate"]
    return batch

データ準備関数を 🤗 Datasets の map メソッドに適用することができます。ここでは、オーディオを入力特徴量に前処理し、テキストをラベルにトークン化したので、textaudio の列を削除します:

gigaspeech = gigaspeech.map(prepare_dataset, remove_columns=gigaspeech["train"].column_names)

3. フィルタリング関数

トレーニングの前に、トレーニングデータをフィルタリングするためのヒューリスティックを持っているかもしれません。たとえば、オーディオサンプルの長さが30秒を超える場合は、オーディオサンプルを切り詰めたりメモリエラーのリスクを冒すことを防ぐために、フィルタリングしたい場合があります。前のステップでモデルのデータを準備したのと同じ方法でこれを行うことができます。

まず、どのサンプルを保持し、どのサンプルを破棄するかを示す関数 is_audio_length_in_range を作成します。この関数は、30秒未満のサンプルは True を返し、30秒以上のサンプルは False を返します。

MAX_DURATION_IN_SECONDS = 30.0

def is_audio_length_in_range(input_length):
    return input_length < MAX_DURATION_IN_SECONDS

このフィルタリング関数を 🤗 Datasets の filter メソッドに適用することができます。30秒未満のすべてのサンプル(True)を保持し、30秒以上のサンプル(False)を破棄します:

gigaspeech["train"] = gigaspeech["train"].filter(is_audio_length_in_range, input_columns=["input_length"])

これで、GigaSpeech データセットがモデルのために完全に準備されました!合計で、このプロセスには13行のPythonコードが必要でした。データセットの読み込みから最終のフィルタリングステップまで、すべてをカバーしています。

ノートブックをできるだけ一般的なものに保ちながら、基本的なデータ準備手順のみを実行しました。ただし、オーディオデータセットに適用できる関数に制限はありません。データ拡張、音声活性検出、ノイズ低減など、より複雑な操作を行うために、prepare_dataset関数を拡張することができます。🤗データセットを使用すると、Python関数で書けるなら、データセットに適用できます!

ストリーミングモード:シルバーブレット

オーディオデータセットに直面する最大の課題の一つは、その膨大なサイズです。GigaSpeechのxs構成には、訓練データのわずか10時間しか含まれていませんが、ダウンロードと準備のために13GB以上のストレージスペースを要します。では、より大きな分割でトレーニングを行いたい場合はどうなるのでしょうか?完全なxl構成には、10,000時間以上の訓練データが含まれており、1TB以上のストレージスペースが必要です。ほとんどの音声研究者にとって、これは典型的なハードディスクドライブの仕様を超えています。追加のストレージを買って確保する必要があるのでしょうか?それとも、これらのデータセットを「ディスクスペースの制約なし」でトレーニングできる方法はあるのでしょうか?

🤗データセットを使用することで、これが可能になります。それはストリーミングモードの使用によって実現されており、図1でグラフィカルに示されています。ストリーミングによって、データをデータセットを繰り返し処理する際に逐次的に読み込むことができます。一度にデータセット全体をダウンロードするのではなく、サンプルごとにデータセットを読み込みます。データセットを反復処理しながら、必要なときにサンプルを逐次的に読み込んで準備します。この方法では、使用しているサンプルのみを読み込みますが、使用していないサンプルは読み込みません!サンプルの処理が完了すると、データセットを反復処理し、次のサンプルを読み込みます。

これは、TV番組をダウンロードするかストリーミングするかのアナロジーです。TV番組をダウンロードする場合、ビデオ全体をオフラインでダウンロードしてディスクに保存します。ビデオを視聴するためには、ビデオ全体のダウンロードが完了するまで待たなければならず、ビデオファイルのサイズと同じだけのディスクスペースが必要です。これに対して、TV番組をストリーミングする場合、ビデオのいかなる部分もディスクにダウンロードせず、リモートのビデオファイルを逐次的に反復処理し、必要な部分をリアルタイムで読み込みます。ビデオ全体のバッファリングが完了するまで待つ必要はありません。最初の部分が準備できたらすぐに視聴を開始できます!これは、データセットの読み込みに適用するストリーミングの原則と同じです。

図1:ストリーミングモード。データセットはデータセットを反復処理する際に逐次的に読み込まれます。

ストリーミングモードには、次のような主な利点があります:

  1. ディスクスペース:データセットを反復処理する際に、サンプルはメモリに1つずつ読み込まれます。データがローカルにダウンロードされないため、ディスクスペースの要件はありませんので、任意のサイズのデータセットを使用できます。
  2. ダウンロードと処理時間:オーディオデータセットは大きく、ダウンロードと処理にはかなりの時間がかかります。ストリーミングでは、読み込みと処理が逐次的に行われるため、最初のサンプルが利用可能になるとすぐにデータセットを使用できます。
  3. 簡単な実験:スクリプトが正常に動作するかどうかを確認するために、わずかなサンプルで実験を行うことができます。データセット全体をダウンロードする必要はありません。

ストリーミングモードにはひとつの注意点があります。データセットをダウンロードする際、生データと処理済みデータの両方がローカルディスクに保存されます。このデータセットを再利用する場合、ダウンロードと処理の手順をスキップして、処理済みデータを直接ディスクから読み込むことができます。そのため、ダウンロードと処理の操作は1回だけ行う必要があり、その後は準備済みデータを再利用できます。ストリーミングモードでは、データはディスクにダウンロードされません。したがって、ダウンロードされたデータと前処理済みデータのいずれもキャッシュされません。データセットを再利用する場合は、オーディオファイルを再度逐次的に読み込んで処理する必要があります。そのため、複数回使用する可能性のあるデータセットをダウンロードすることをお勧めします。

ストリーミングモードを有効にするにはどうすればよいですか?簡単です!データセットを読み込む際にstreaming=Trueと設定するだけです。あとは自動的に処理されます:

gigaspeech = load_dataset("speechcolab/gigaspeech", "xs", streaming=True)

これまでにこのチュートリアルでカバーしたすべての手順は、ストリーミングデータセットにもコードの変更なしに適用することができます。唯一の変更点は、Pythonのインデックスを使用して個々のサンプルにアクセスできなくなったことです(つまり、gigaspeech["train"][sample_idx]のような形式は使えません)。代わりに、データセットを繰り返し処理する必要があります。たとえば、forループを使用することがあります。

ストリーミングモードは、研究を次のレベルに引き上げることができます。最大のデータセットにアクセスできるだけでなく、ディスク容量の心配をせずに複数のデータセットでシステムを簡単に評価することができます。単一のデータセットで評価する場合と比べて、マルチデータセットの評価は音声認識システムの汎化能力のより良い指標となります(参考:エンドツーエンド音声ベンチマーク(ESB))。同梱されているGoogle Colabでは、ストリーミングモードを使用してWhisperモデルを8つの英語音声認識データセットで一括評価する例が提供されています。

The Hubのオーディオデータセットのツアー

このセクションは、Hugging Face Hubの最も人気のある音声認識、音声翻訳、オーディオ分類のデータセットの参考ガイドとして機能します。GigaSpeechデータセットでカバーした内容を、Hubのいずれのデータセットにも適用することができます。やるべきことは、load_dataset関数内のデータセット識別子を切り替えるだけです。それだけ簡単です!

  1. 英語音声認識
  2. 多言語音声認識
  3. 音声翻訳
  4. オーディオ分類

英語音声認識

音声認識、または音声-to-テキスト変換は、話された音声を書かれたテキストにマッピングするタスクであり、音声とテキストが同じ言語である場合に行われます。Hub上の最も人気のある英語音声認識データセットの概要を提供します:

8つの英語音声認識データセットすべてでシステムを評価するガイドについては、Google Colabを参照してください。

次のデータセットの説明は、主にESBベンチマーク論文から引用されています。

LibriSpeech ASR

LibriSpeechは、ASRシステムを評価するための標準的な大規模データセットです。LibriVoxプロジェクトから収集された約1,000時間のナレーション付きオーディオブックで構成されています。LibriSpeechは、大量の既存の書き起こされた音声データを利用するための研究者の支援に重要な役割を果たしてきました。そのため、学術的な音声システムのベンチマークにおいて最も人気のあるデータセットの1つとなっています。

librispeech = load_dataset("librispeech_asr", "all")

Common Voice

Common Voiceは、話者がWikipediaのテキストをさまざまな言語で録音するシリーズのクラウドソーシングされたオープンライセンスの音声データセットです。誰でも録音を提供できるため、音声の品質と話者にはかなりのバリエーションがあります。音声条件は、録音アーティファクト、アクセントのある音声、ためらい、外国語の存在など、困難です。書き起こしは大文字と句読点が付いています。バージョン11.0の英語サブセットには、約2,300時間の検証済みデータが含まれています。データセットの使用には、Hugging Face HubのCommon Voice利用規約に同意する必要があります。同意した後、データセットにアクセスするための認証トークンを提供する必要があります。

common_voice = load_dataset("mozilla-foundation/common_voice_11", "en", use_auth_token=True)

VoxPopuli

VoxPopuliは、2009年から2020年までの欧州議会イベントの録音データを利用した大規模な多言語音声コーパスです。そのため、非母国語話者からの演説、政治演説などのユニークなドメインを占めています。英語のサブセットには、約550時間のラベル付き音声が含まれています。

voxpopuli = load_dataset("facebook/voxpopuli", "en")

TED-LIUM

TED-LIUMは、英語のTED Talkカンファレンスのビデオを基にしたデータセットです。話し方は教育的な演説です。書き起こされたトークは、さまざまな文化、政治、学術のトピックをカバーしており、専門用語が含まれています。最新のリリース3では、約450時間のトレーニングデータが含まれています。検証データとテストデータは、以前のリリースと一貫しています。

tedlium = load_dataset("LIUM/tedlium", "release3")

GigaSpeech

GigaSpeechは、オーディオブック、ポッドキャスト、YouTubeからキュレーションされた多ドメインの英語音声認識コーパスです。芸術、科学、スポーツなどさまざまなトピックで、語りかけ型と自発的な発話の両方をカバーしています。10時間から10,000時間までのトレーニングデータが含まれており、標準化された検証データとテストデータが用意されています。

gigaspeech = load_dataset("speechcolab/gigaspeech", "xs", use_auth_token=True)

SPGISpeech

SPGISpeechは、S&P Global, Inc.によって手動で転記された企業の決算発表の英語音声認識コーパスです。転記は、スピーチの専門的なスタイルガイドに従って完全にフォーマットされています。トレーニングデータは、200時間から5,000時間までの範囲があり、標準化された検証データとテストデータが用意されています。

spgispeech = load_dataset("kensho/spgispeech", "s", use_auth_token=True)

Earnings-22

Earnings-22は、世界の企業から収集された英語の決算発表の119時間のコーパスです。このデータセットは、さまざまな実際の金融トピックをカバーする幅広いスピーカーとアクセントの範囲を集約することを目的として開発されました。スピーカーやアクセントには、7つの異なる言語地域からのスピーカーが含まれています。Earnings-22は主にテスト専用のデータセットとして公開されました。Hubには、トレーニング・検証・テストの分割が行われたデータセットのバージョンが含まれています。

earnings22 = load_dataset("revdotcom/earnings22")

AMI

AMIは、異なる録音ストリームを使用して記録された会議の録音を100時間含んでいます。コーパスには、ワードレベルで整列された会議の手動注釈付き正書法の転写が含まれています。AMIの各サンプルには非常に大きな音声ファイル(10〜60分)が含まれており、多くの音声認識システムのトレーニングに適した長さにセグメント化されています。AMIには、IHMとSDMの2つの分割が含まれています。IHM(個別ヘッドセットマイク)には近接スピーチが含まれており、SDM(シングルディスタントマイク)には遠隔スピーチが含まれています。

ami = load_dataset("edinburghcstr/ami", "ihm")

多言語音声認識

多言語音声認識は、英語以外のすべての言語に対する音声認識(音声からテキストへの変換)を指します。

Multilingual LibriSpeech

Multilingual LibriSpeechは、LibriSpeech ASRコーパスの多言語版です。LibriVoxプロジェクトから取られた多くの読み上げオーディオブックの大規模なコーパスであり、学術研究に適したデータセットです。英語、ドイツ語、オランダ語、スペイン語、フランス語、イタリア語、ポルトガル語、ポーランド語の8つの高リソース言語にデータが分割されています。

Common Voice

Common Voiceは、スピーカーがさまざまな言語でWikipediaのテキストを録音するクラウドソーシングされたオープンライセンスの音声データセットのシリーズです。誰でも録音に貢献できるため、オーディオの品質とスピーカーの両方にかなりのバリエーションがあります。音声の条件は挑戦的であり、録音のアーティファクト、アクセントのあるスピーチ、ためらい、外国語の存在などがあります。転写は大文字と句読点が付いています。バージョン11では、低リソースと高リソースの100以上の言語が利用可能です。

VoxPopuli

VoxPopuliは、2009年から2020年の欧州議会イベントの録音データから収集された大規模な多言語音声コーパスです。そのため、非ネイティブスピーカーによる演説、政治スピーチの独自の領域を占めています。15のヨーロッパ言語に対するラベル付きの音声転写データが含まれています。

FLEURS

FLEURS(Few-shot Learning Evaluation of Universal Representations of Speech)は、102言語で音声認識システムを評価するためのデータセットです。このデータは、英語から101の他の言語への3001文の翻訳を含む機械翻訳コーパスであるFLoRes-101データセットから派生しています。ネイティブスピーカーが各言語で文の転写をナレーションしています。録音されたオーディオデータは、文の転写とペアになっており、101の言語全体での多言語音声認識を可能にしています。トレーニングセットには、言語ごとに約10時間の教師付き音声転写データが含まれています。

音声翻訳

音声翻訳は、話された音声を書かれたテキストにマッピングするタスクであり、音声とテキストが異なる言語である場合があります(例: 英語の音声からフランス語のテキストへ)。

CoVoST 2

CoVoST 2は、21の言語から英語への翻訳と、英語から15の言語への翻訳をカバーする大規模な多言語音声翻訳コーパスです。このデータセットは、MozillaのオープンソースのCommon Voiceデータベースを使用して作成されました。コーパスには合計2,900時間の音声が含まれています。

FLEURS

FLEURS(Few-shot Learning Evaluation of Universal Representations of Speech)は、102の言語でスピーチ認識システムを評価するためのデータセットであり、その中には「低リソース」と分類されるものも含まれています。データは、FLoRes-101データセットから派生しており、英語から101の他の言語への3001文の翻訳が含まれています。ネイティブスピーカーが、それぞれの母国語で文の書き起こしをナレーションするために録音されています。101の言語ごとに、録音されたオーディオデータと文の書き起こしをペアにしたn対n対nの音声翻訳データのコーパスが作成されます。トレーニングセットには、ソースとターゲットの言語の組み合わせごとに約10時間の音声書き起こしデータが含まれています。

音声分類

音声分類は、生の音声入力をクラスラベルの出力にマッピングするタスクです。音声分類の実用的な応用例には、キーワードスポッティング、話者の意図、言語の識別などがあります。

SpeechCommands

SpeechCommandsは、1秒間のオーディオファイルで構成されるデータセットであり、それぞれには英語での単語の発音または背景のノイズが含まれています。単語は一部のコマンドの小さなセットから取られ、複数の異なる話者によって話されています。このデータセットは、オンデバイスのキーワードスポッティングシステムのトレーニングと評価を支援するために設計されています。

多言語の発話

多言語の発話は、1秒間の音声サンプルで構成される大規模なコーパスであり、それぞれには単一の発話が含まれています。このデータセットには50の言語と340,000以上のキーワードが含まれており、総計23.4ミリオンの1秒間の音声例または6,000時間以上の音声が含まれています。オーディオ書き起こしデータはMozilla Common Voiceプロジェクトから取得されます。各発話の単語レベルでタイムスタンプが生成され、個々の発話と対応する書き起こしを抽出し、単一の発話データセットを形成します。このデータセットは、多言語キーワードスポッティングや発話語検索の学術研究や商業アプリケーションで使用することを目的としています。

FLEURS

FLEURS(Few-shot Learning Evaluation of Universal Representations of Speech)は、102の言語でスピーチ認識システムを評価するためのデータセットであり、その中には「低リソース」と分類されるものも含まれています。データは、FLoRes-101データセットから派生しており、英語から101の他の言語への3001文の翻訳が含まれています。ネイティブスピーカーが、それぞれの母国語で文の書き起こしをナレーションするために録音されています。録音されたオーディオデータは、それが話された言語のラベルとペアになっています。データセットは、コーパス内の各発話の言語を予測するためにトレーニングされる言語識別のための音声分類データセットとして使用することができます。

締めくくり

このブログ記事では、Hugging Face Hubを探求し、データセットのプレビューを体験しました。これは、データセットをダウンロードする前にオーディオデータを聴くための効果的な手段です。1行のPythonコードでオーディオデータセットを読み込み、機械学習モデルに適した一連の一般的な前処理手順を実行しました。これには、必要な操作を実行するために単純なPython関数に頼るだけで、合計13行のコードが必要でした。ストリーミングモードを紹介しました。これは、オンザフライでオーディオデータのサンプルを読み込み、準備するための方法です。最後に、Hub上で最も人気のある音声認識、音声翻訳、音声分類のデータセットをまとめました。

このブログを読んでいただき、🤗 データセットがオーディオデータセットをダウンロードして準備するためのナンバーワンの場所であることに同意いただければ幸いです。🤗 データセットは、コミュニティの取り組みによって実現されています。データセットを貢献したい場合は、新しいデータセットの追加ガイドを参照してください。

ブログ記事への貢献に協力していただいた以下の方々に感謝いたします: Vaibhav Srivastav、Polina Kazakova、Patrick von Platen、Omar Sanseviero、Quentin Lhoest。

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more