Bug 44758
| Summary: | Xiphos: ошибка взаимодействия с голосовым синтезатором festival | ||
|---|---|---|---|
| Product: | Sisyphus | Reporter: | Anton Zhukharev <ancieg> |
| Component: | xiphos | Assignee: | Ilya Mashkin <oddity> |
| Status: | NEW --- | QA Contact: | qa-sisyphus |
| Severity: | normal | ||
| Priority: | P5 | CC: | oddity |
| Version: | unstable | ||
| Hardware: | x86_64 | ||
| OS: | Linux | ||
Результат проверки актуальности Состояние: Sisyphus: xiphos 4.3.2.14, StartFestival() всё ещё festival --server без --language russian. Английский работает, русский даёт пустой .au. Рекомендация: ретест «Прочесть выделение» на русском на Sisyphus Проверил на Sisyphus x86_64 (GNOME 50/Wayland): xiphos-4.3.2.14-alt2 (задание https://packages.altlinux.org/tasks/401138/; пересобран с webkit2gtk-4.1, иначе не стартует — см. #44755), festival-2.5-alt0.7, festvox_msu_ru_nsh_clunits-0.5-alt3, festvox_kallpc16k-1.95-alt2. Воспроизводится, и стало хуже: 1. xiphos по-прежнему запускает синтезатор как `festival --server` без выбора голоса (src/gtk/utilities.c:1812-1815), т.е. с английским kal_diphone. Английский текст читается (сервер отвечает LP/OK), на русском тексте дочерний процесс festival молча умирает (pgrep: [festival] <defunct>): $ echo "Блажен читающий и слушающие" | text2wave -o ru.wav; echo rc=$? → rc=139 (segfault), файл 0 байт $ echo "Блажен читающий и слушающие" | text2wave -eval "(voice_msu_ru_nsh_clunits)" -o ru.wav → rc=0, 85 КБ wav Со стороны xiphos «ничего не происходит», как и у репортёра (в p10 было «Cannot load wavefile»). 2. Первый вызов «Прочесть Выделение» всегда даёт диалог «No selection made»: в WebKit2-сборке копирование выделения асинхронное, on_read_selection_aloud_activate (src/gtk/menu_popup.c:1489-1501: COPY_SELECTION → paste_clipboard → сразу get_chars) читает поле словаря раньше, чем туда приходит вставка; текст доходит до festival только со второго-третьего раза (и уже устаревший). Со стороны xiphos нужно выбирать голос по языку модуля/locale (например `festival --language russian` или `(voice_msu_ru_nsh_clunits)` при старте сервера) и дожидаться вставки перед чтением. Сегфолт festival на кириллице с английским голосом — отдельный баг на festival. Перевешиваю на сопровождающего. |

Description
Anton Zhukharev 2022-12-28 18:25:27 MSKСистемы из образов (обновлены до P10 28.12.2022): * 854d6f828808525cefd5e4a2c2d1f5be alt-education-10.0-x86_64.iso (XFCE/KDE) * c1e5326723ffacff16761beda9293f14 alt-kworkstation-10.1-install-x86_64.iso * 3cc064c3410e8763c2b7bbd8d0af4936 alt-server-10.0-x86_64.iso * d7fa044eba27efb20479cbeb04058c0b alt-workstation-10.0-x86_64.iso ======================================== Пакеты: * xiphos-4.2.1-alt2.1 * festival-2.5-alt0.4 * festvox_msu_ru_nsh_clunits-0.5-alt3 ======================================== Шаги воспроизведения: 1. Установить пакеты: xiphos sword-bibles-ru festival festvox_msu_ru_nsh_clunits 2. Запустить xiphos 3. Выделить текст на русском языке, ПКМ -> Прочесть Выделение ======================================== Фактический результат: * Ничего не происходит ======================================== Ожидаемый результат: * Чтение выделенного текста голосовым синтезатором ======================================== Дополнительные исследования: * В Сизифе не проверялось - в нём пакет xiphos удалён. * В эмуляторе терминала выводится сообщение вида: Cannot load wavefile: /tmp/.private/test/est_04226_00000.au * Если выполнять прочтение выделения на англиском языке, то ошибка не воспроизводится (чтение на английском работает). * Можно насильно переключить программу на использование русского синтезатора: # mv /usr/bin/festival{,.bin} # cat << EOF >> /usr/bin/festival && chmod +x /usr/bin/festival #!/bin/sh exec /usr/bin/festival.bin --language russian ${1+"$@"} EOF # pgrep festival | xargs kill после таких "махинаций" ошибка не воспроизводится, однако синтезатор на английском языке перестаёт работать (читается английский текст транслитом русским синтезатором).