У меня есть аудиофайл, который представляет собой запись человека, говорящего по-разному по буквам, вместе с правильной, созданной человеком расшифровкой этого аудиофайла, например, строкой ABCDEF
.
Этот аудиофайлзатем передается в API транскрипции речи в текст, и мне дается упорядоченное отображение каждого символа на временную метку, которая произошла (началась) в аудиоклипе.Например, для простого 5-секундного клипа отображение может выглядеть следующим образом:
['A' => 0.2, 'B' => 1.5, 'C' => 2.2, 'D' => 3.2, 'E' => 3.8, 'F' => 4.2]
Суть в том, что это отображение метки времени, возвращаемое из API, иногда неправильно транскрибирует буквы.В дополнение к простому ошибочному восприятию буквы (замена), он может почувствовать, что существуют буквы, которые на самом деле не являются (вставки), или полностью пропускают произносимые буквы (изъятия).Например, аудио, содержащее ABCDEF
, может иметь ответ API, например:
['A' => 0.2, 'B' => 1.5, 'C' => 2.2, 'X' => 2.8, 'D' => 3.2, 'E' => 3.8, 'F' => 4.2]
Конечный желаемый результат здесь заключается в согласовании фактической транскрипции и потенциально ошибочной буквысопоставление меток времени из API для получения меток времени, когда каждая буква фактически произносилась в клипе .Я полагаю, что могу использовать некоторую линейную интерполяцию вместе с алгоритмом сравнения, чтобы найти идеальное решение, но мне нужно некоторое руководство по началу работы.Спасибо.
Примечание: "буквы" в этом примере на самом деле на самом деле являются китайскими иероглифами, но для примера я использую буквы, так как они односложные и их легче визуализировать.