SpeechSynthezier.PhonemeReached событие и управляющие символы
Я создаю небольшой виджет Silverlight, который произносит слово и выделяет каждый слог, как он произносится.
Как часть этого, я использую событие SpeechSynthesizer.PhonemeReached, чтобы определить время начала и окончания каждой фонемы (как шаг в определении времени начала и конца каждого слога).
Странно то, что свойство PhonemeReachedEventArgs.Phoneme иногда является управляющим символом, по крайней мере (но, возможно, не исключительно) U + 0004 КОНЕЦ ПЕРЕДАЧИ, включая места, которые не являются, как минимум, концом передачи (как, скажем, начало).
Я не могу найти никаких документов о том, что это должно означать, кто-нибудь знает?
РЕДАКТИРОВАТЬ: Чтобы уточнить, я не делаю синтез речи в Silverlight (так как это не поддерживается), я делаю это на сервере и возвращаю время границы слога и IPA-транскрипцию слова в HTTP-заголовке аудио ответ. Я, вероятно, вообще не должен был упоминать часть с серебряным светом, поскольку она не очень актуальна, я просто не особо задумывался над объяснением контекста. По электронной почте Ой.:)
1 ответ
Если вы пытаетесь выяснить время начала и окончания каждой фонемы (это действительно другой вопрос)... попробуйте использовать свойство PhonemeReachedEventArgs.Duration. Время начала будет "временем начала фразы" + совокупная длительность всех ранее произнесенных фонем. Время окончания будет "временем начала текущей фонемы" + длительность текущей фонемы.
Что касается ответа на ваш "опубликованный" вопрос, я предполагаю, что вы используете английский в качестве языка синтеза. В этом случае вполне вероятно, что "символы", которые вы видите, на самом деле являются индексными значениями для таблицы фонем American English. Вы также можете увидеть то же самое с китайскими фонемами, однако японские фонемы имеют представления в юникоде, которые находятся за пределами диапазона "контрольных символов".