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

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

А вот вам сразу ссылка на сайт нашего корпуса.

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


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

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

Почему наша цель 10 тысяч часов?


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

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


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

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



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


Файловая БД


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

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 на пальцах мы записали лекцию про задачу распознавания речи (и немного про синтез). Возможно, она будет вам полезной!


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



Ещё раз сайт проекта для тех, кто не увидел ссылку выше.
@
06.05.2019 23:36 UTC
Первоисточник