Огромный открытый датасет русской речи

в 18:36, , рубрики: annotated speech, asr, automatic speech recognition, data, open datasets, open source, speech corpus, speech recognition, STT, звук, машинное обучение, открытые данные

image

Специалистам по распознаванию речи давно не хватало большого открытого корпуса устной русской речи, поэтому только крупные компании могли позволить себе заниматься этой задачей, но они не спешили делиться своими наработками.

Мы торопимся исправить это годами длящееся недоразумение.

Итак, мы предлагаем вашему вниманию набор данных из 4000 часов аннотированной устной речи, собранный из различных интернет-источников.

Подробности под катом.

Вот данные по текущей версии 0.3:

Тип данных Аннотация Качество Фразы Часы GB
Книги alignment 95% / чистый 1,1M 1,511 166
Звонки ASR 70% / шумный 837K 812 89
Генерированные (русские адреса) TTS 100% / 4 голоса 1,7M 754 81
Видео с YouTube субтитры 95% / шумный 786K 724 78
Книги ASR 70% / шумный 124K 116 13
Другие датасеты начитывание и alignment 99% / чистый 17K 43 5

А вот вам сразу ссылка на сайт нашего корпуса: github.com/snakers4/open_stt

Почему 10 тысяч часов?

Есть различные исследования генерализации нейросетей при распознавании речи, но известно, что хорошая генерализация не получается на наборах данных меньше 1000 часов. Цифра порядка 10 тысяч часов уже считается приемлемой в большинстве случаев, а дальше уже зависит от конкретной задачи.

Что ещё сделать, чтобы улучшить качество распознавания, если данных по-прежнему не хватает?

Зачастую, можно приспособить нейросеть к вашим дикторам через начитку дикторами текстов.
Также можно приспособить нейросеть к словарю из вашей предметной области (языковая модель).

Будем ли мы развивать проект дальше?

Наша работа на этом не закончена, мы хотим получить хотя бы 10 тысяч часов аннотированной речи.
А дальше мы собираемся делать открытые и коммерческие модели для распознавания речи с использованием этого датасета. И вам предлагаем присоединяться: помогайте нам улучшать датасет, используйте его в своих задачах.

Как мы делали этот датасет?

  • Нашли каналы с качественными субтитрами в YouTube, скачали аудио и субтитры
  • Давали аудио для распознавания другим системам распознавания речи
  • Начитывали адреса робо-голосами
  • Нашли в интернете аудиокниги и тексты книг, после чего разбили на фрагменты по паузам и сопоставили одно с другим (так называемая задача «alignment»)
  • Добавили имеющиеся в интернете маленькие русские датасеты.
  • После этого преобразовали файлы в единый формат (16-bit wav, 16 kHz, mono, иерархическое расположение файлов на диске).
  • Метаданные сохранили в отдельном файле manifest.csv .

Как это использовать:

Файловая БД

Расположение файлов определяется их хешами, вот таким образом:

target_format = 'wav'
wavb = wav.tobytes()
f_hash = hashlib.sha1(wavb).hexdigest()
store_path = Path(root_folder,
                  f_hash[0],
                  f_hash[1:3],
                  f_hash[3:15]+'.'+target_format)

Чтение файлов

from utils.open_stt_utils import read_manifest
from scipy.io import wavfile
from pathlib import Path
manifest_df = read_manifest('path/to/manifest.csv')

for info in manifest_df.itertuples():
    sample_rate, sound = wavfile.read(info.wav_path)
    text = Path(info.text_path).read_text()
    duration = info.duration

Файлы manifest содержат тройки: имя аудио-файла, имя файла с текстовым описанием, и длительность фразы в секундах.

Фильтрация файлов только определённой длины

from utils.open_stt_utils import (plain_merge_manifests,
                                  check_files,
                                  save_manifest)
train_manifests = [
 'path/to/manifest1.csv',
 'path/to/manifest2.csv',
]
train_manifest = plain_merge_manifests(train_manifests,
                                        MIN_DURATION=0.1,
                                        MAX_DURATION=100)
check_files(train_manifest)
save_manifest(train_manifest,
             'my_manifest.csv')

Что почитать или посмотреть на русском языке, чтобы лучше познакомиться с задачей распознавания речи?

Недавно в рамках курса Deep Learning на пальцах мы записали лекцию про задачу распознавания речи (и немного про синтез). Возможно, она будет вам полезной!

Лицензионные вопросы

  • Мы выкладываем датасет под двойной лицензией: для некоммерческих целей мы предлагаем лицензию cc-by-nc 4.0, для коммерческих целей — использование после договорённости с нами.
  • Как обычно в таких случаях, все права на использованные данных, входящих в датасет, остаются у их владельцев. Наши права распространяются на сам датасет. Для научных и образовательных целей при этом действуют отдельные правила, смотрите законодательство вашей страны.

Ещё раз сайт проекта для тех, кто не увидел ссылку выше: github.com/snakers4/open_stt

Автор: buriy

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js