Этап 2: озвучка ответов через Silero
- Потоковая озвучка: ответ режется на фразы, синтез и воспроизведение в отдельных потоках - Подготовка текста: числа словами, без markdown, ссылок и блоков кода - Модель Silero скачивается в LOCALAPPDATA и прогревается при старте - Состояние «говорю», переключатель озвучки в трее, «Стоп» прерывает речь - Тесты нарезки текста и оркестратора озвучки Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
7933613234
commit
fec52dd1c2
@@ -34,6 +34,11 @@ class TrayIcon(QSystemTrayIcon):
|
||||
provider_menu.addAction(action)
|
||||
self._provider_actions[name] = action
|
||||
|
||||
self._speech_action = QAction("Озвучивать ответы", self, checkable=True)
|
||||
self._speech_action.setChecked(assistant.speech_enabled)
|
||||
self._speech_action.toggled.connect(assistant.set_speech_enabled)
|
||||
menu.addAction(self._speech_action)
|
||||
|
||||
menu.addAction("Новый диалог", assistant.clear_history)
|
||||
menu.addSeparator()
|
||||
menu.addAction("Выход", QApplication.quit)
|
||||
@@ -45,6 +50,7 @@ class TrayIcon(QSystemTrayIcon):
|
||||
self.messageClicked.connect(window.show_and_raise)
|
||||
assistant.state_changed.connect(self._on_state_changed)
|
||||
assistant.provider_changed.connect(self._on_provider_changed)
|
||||
assistant.speech_enabled_changed.connect(self._speech_action.setChecked)
|
||||
assistant.reply_finished.connect(self._on_reply_finished)
|
||||
assistant.error_occurred.connect(self._on_error)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user