Я генерирую речь через API преобразования текста в речь Google Cloud, и я хотел бы выделять слова по мере их произнесения.
Есть ли способ получить отметки времени для произнесенных слов или предложений?
Я генерирую речь через API преобразования текста в речь Google Cloud, и я хотел бы выделять слова по мере их произнесения.
Есть ли способ получить отметки времени для произнесенных слов или предложений?
Этот вопрос, кажется, стал довольно популярным, поэтому я подумал, что расскажу, чем я закончил. Этот метод, вероятно, будет работать только с английским или похожими языками.
Сначала я разбиваю текст по знакам препинания, которые мешают говорить. Каждое «предложение» переводится в речь отдельно. Полученные аудиофайлы имеют кажущееся случайное количество тишины в конце, которое необходимо удалить перед присоединением к ним, это можно сделать с помощью фильтра FFmpeg silencedetect
. Затем вы можете соединить аудиофайлы с соответствующим промежутком. Приблизительные временные метки слова могут быть линейно интерполированы в предложениях.
Это можно сделать с помощью версий SSML и v1beta1 API преобразования текста в речь Google Cloud: https://cloud.google.com/text-to-speech/docs/reference/rest/v1beta1/text/synthesize#TimepointType
<mark>
SSML в то место в тексте, для которого вы хотите указать временную метку (возможно, в конце каждого предложения).SSML_MARK
. Если это поле не задано, по умолчанию точки времени не возвращаются.