ASR — это аббревиатура автоматического распознавания речи, которая представляет собой технологию, преобразующую человеческую речь в текст. Эта технология включает в себя несколько дисциплин, таких как акустика, фонетика, лингвистика, теория цифровой обработки сигналов, теория информации и информатика. На производительность системы ASR влияют такие факторы, как размер словаря распознавания и сложность речи, качество речевого сигнала, наличие одного или нескольких динамиков, а также аппаратное обеспечение.
Из предыдущего введения мы знаем, что при оценке эффекта модели самое важное — собрать тестовые данные, соответствующие сценарию. Системы ASR в целом можно разделить на специфическое и неспецифическое распознавание людей, а также на системы с малым, средним и большим словарным запасом. По способу ввода речи ее можно разделить на отдельные слова, связные слова и систему слитной речи. Кроме того, входную речь также можно классифицировать по режиму ее произношения (например, чтение вслух и разговорная речь), диалектному фону (например, мандаринский диалект, диалектно-мандаринский диалект и системы распознавания диалектной речи) и эмоциональному состоянию (например, нейтральная речь). и системы распознавания эмоциональной речи). Итак, на самом деле, вы можете видеть, что собрать столько категорий голосовых материалов очень хлопотно. Раньше у нас здесь был брат. Чтобы собрать достаточно данных, он специально подал заявку в фонд и разместил вознаграждение на платформе — учитывая конкретные тексты, он предлагал вознаграждение людям разного возраста, пола, диалектов и т. д. за их прочтение. тексты вслух и разместил их на платформе. Голосовой файл был отправлен брату в обмен на деньги. Поэтому стоимость качественных данных не низкая. Помните, два месяца назад у нас был проект, и проект подготовил бюджет в 20 Вт на покупку данных. Такие данные труднее использовать. В противном случае высококачественные данные представляют собой самый большой разрыв между отечественными и зарубежными моделями.
Как мы говорили выше, нам необходимо собирать различные типы данных, и эта часть работы очень тяжелая. У разных проектов разные требования. Например, вот пример данных, которые можно скачать из Интернета:
Основное содержимое, которое необходимо аннотировать, включает в себя: транслитерацию текста, транслитерацию знаков препинания, разделение интервалов между говорящими и аннотацию недопустимых интервалов данных. Вот лишь несколько стандартных примеров:
Поскольку существует множество спецификаций, я приведу несколько примеров на основе спецификаций, чтобы каждый мог видеть, что рабочая нагрузка по маркировке данных также очень высока. К счастью, вы можете подать заявку на набор рабочей силы для группы маркировки.
WER (коэффициент ошибок в словах) относится к коэффициенту ошибок между словами, выдаваемыми системой, и исходными словами в системах машинного перевода или распознавания речи. Эту метрику часто используют для оценки производительности систем машинного перевода или распознавания речи. WER рассчитывается путем деления количества слов, неправильно переведенных системой, на общее количество слов.
Формула расчета: Частота ошибок в словах WER=Расстояние редактирования идентифицированного текста относительно аннотированного текста/общее количество слов аннотированного текста.
Пример кода:
import Levenshtein
text1 = «Кто я, я своего рода тестер ах»
text2 = «Кто я, я разработчик ах»
distance = Levenshtein.distance(text1, text2)
print(f"The Levenshtein distance between '{text1}' and '{text2}' is {distance}.")
wer = distance/len(text1)
print(f"The wer is {wer}.")
Точность слова=Распознать правильное количество слов/отметить общее количество слов в тексте
Скорость вставки = количество операций вставки/общее количество слов в аннотированном тексте.
Скорость удаления = количество операций удаления/общее количество слов аннотированного текста.
Коэффициент замены = количество операций замены/общее количество слов в аннотированном тексте.
Пример кода:
import Levenshtein
def calculate_error_rates(ref, hyp):
# Вычислить расстояние Левенштейна и отредактировать операции
editops = Levenshtein.editops(ref, hyp)
# вычислитьскорость вставки、Скорость удаленияикоэффициент замещения
insertions = 0
deletions = 0
substitutions = 0
for op in editops:
if op[0] == 'insert':
insertions += 1
elif op[0] == 'delete':
deletions += 1
elif op[0] == 'replace':
substitutions += 1
# Посчитать общее количество символов
total_chars = len(ref) + len(hyp)
# вычислитьскорость вставки、Скорость удаленияикоэффициент замещения
insertion_rate = insertions / total_chars
deletion_rate = deletions / total_chars
substitution_rate = substitutions / total_chars
return insertion_rate, deletion_rate, substitution_rate
# Пример
ref = «Я люблю есть яблоки»
hyp = «Я люблю есть апельсины, ах»
insertion_rate, deletion_rate, substitution_rate = calculate_error_rates(ref, hyp)
print(f"Insertion rate: {insertion_rate:.2%}")
print(f"Deletion rate: {deletion_rate:.2%}")
print(f"Substitution rate: {substitution_rate:.2%}")
Видно, что с помощью библиотеки Левенштейна мы можем легко автоматизировать оценку эффектов. Конечно, предполагается, что данные и аннотации готовы~. Итак, повторюсь, люди, работающие в области искусственного интеллекта, тратят большую часть своего времени на данные.