- PVSM.RU - https://www.pvsm.ru -
Специалистам по распознаванию речи давно не хватало большого открытого корпуса устной русской речи, поэтому только крупные компании могли позволить себе заниматься этой задачей, но они не спешили делиться своими наработками.
Мы торопимся исправить это годами длящееся недоразумение.
Итак, мы предлагаем вашему вниманию набор данных из 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 [1]
Есть различные исследования генерализации нейросетей при распознавании речи, но известно, что хорошая генерализация не получается на наборах данных меньше 1000 часов. Цифра порядка 10 тысяч часов уже считается приемлемой в большинстве случаев, а дальше уже зависит от конкретной задачи.
Зачастую, можно приспособить нейросеть к вашим дикторам через начитку дикторами текстов.
Также можно приспособить нейросеть к словарю из вашей предметной области (языковая модель).
Наша работа на этом не закончена, мы хотим получить хотя бы 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 на пальцах [2] мы записали лекцию про задачу распознавания речи (и немного про синтез). Возможно, она будет вам полезной!
Ещё раз сайт проекта для тех, кто не увидел ссылку выше: github.com/snakers4/open_stt [1]
Автор: buriy
Источник [4]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/open-source/316762
Ссылки в тексте:
[1] github.com/snakers4/open_stt: https://github.com/snakers4/open_stt/
[2] Deep Learning на пальцах: https://dlcourse.ai/
[3] cc-by-nc 4.0: https://creativecommons.org/licenses/by-nc/4.0/
[4] Источник: https://habr.com/ru/post/450760/?utm_campaign=450760
Нажмите здесь для печати.