У меня есть следующая «проблема» в моем приложении, я пишу приложение, где кто-то напишет текст, SAPI TTS переведет его в речь, а затем я буду работать с выходным WAV.
Что мне нужно, так это информация о фонемах (где в выходном WAV есть какая-то фонема, как долго голос говорит и т.д.) ..
Хорошо, я использовал SpVoice.Phoneme () и добавил обработчик для фонем. Хорошо, теперь я могу получить продолжительность и т. Д., Но в SpVoice.Phoneme () это атрибут StreamPosition, но я не знаю, что это значит ..
от MSDN:
StreamPosition
Положение символа в выходном потоке, с которого начинается фонема.
Я не понимаю, имеют ли они в виду "байтовую" позицию в выходном WAV (на котором байт является фонемой) .. или миллисекундное время в выходном WAV .. или что это значит ??
Например, для текста:
Это высоко. Это низко. Это быстро. Это медленно.
Я получаю значения StreamPositions:
Позиция: 0
Позиция: 120
Позиция: 2562
....
Позиция: 143798
Позиция: 147874
Должность: 151950
Выходной WAV-файл имеет 5,377098 секунд, а последний фонем "оу" сообщается примерно в 4,734 с.
Выходной файл WAV имеет 237 568 байт. Таким образом, значение атрибута StreamPosition "147874", вероятно, не является байтом, с которого начинается фонема. То же самое для «синхронизации» (в мс, потому что у WAV есть 5.3 с, но 151950 мс - 151 950 с .. так что это закрыто ..).
Так что такое StreamPosition? (что означает значение в StreamPosition?)
Мне действительно нужно поймать точное время, когда начнется фонема. Я попробовал это с DateTime.Now.Ticks / 10000. Когда пользователь нажимает кнопку для начала перевода TTS, я сохраняю это значение даты и времени, а когда какой-то обработчик перехватывает какую-то фонему, я снова ловлю это значение. И тогда я получу значение с currTime-startTime. Но этот «метод» не так точен. Всегда есть некоторые расхождения. Есть ли у SpVoice.Phoneme () какой-нибудь «метод» или что-то, чтобы получить точную информацию о времени начала фонемы?
Если нет, есть ли лучший способ получить точное время в мс?
прошу прощения за мой английский и действительно спасибо за все ответы и советы ..