diff --git a/src/renderer/src/i18n/locales/ja-jp.json b/src/renderer/src/i18n/locales/ja-jp.json index 7d3f5229b6..fd89b97065 100644 --- a/src/renderer/src/i18n/locales/ja-jp.json +++ b/src/renderer/src/i18n/locales/ja-jp.json @@ -1458,7 +1458,9 @@ "stopped": "音声再生を停止しました", "segmented": "分割", "segmented_play": "分割再生", - "segmented_playback": "分割再生" + "segmented_playback": "分割再生", + "filter.emojis": "[to be translated]:过滤表情符号", + "show_progress_bar": "[to be translated]:显示TTS进度条" }, "asr": { "title": "音声認識", @@ -1508,8 +1510,7 @@ "browser_not_support": "ブラウザが音声認識をサポートしていません" }, "auto_start_server": "アプリ起動時にサーバーを自動起動", - "auto_start_server.help": "有効にすると、アプリ起動時に音声認識サーバーが自動的に起動します", - "language": "認識言語" + "auto_start_server.help": "有効にすると、アプリ起動時に音声認識サーバーが自動的に起動します" }, "voice": { "title": "音声機能", @@ -1532,8 +1533,7 @@ "reset": "リセット", "saved": "プロンプトが保存されました", "reset_done": "プロンプトがリセットされました", - "info": "このプロンプトは音声通話モードでのAIの応答方法を指導します", - "language_info": "リセットボタンをクリックすると、現在の言語のデフォルトプロンプトが取得されます" + "info": "このプロンプトは音声通話モードでのAIの応答方法を指導します" }, "asr_tts_info": "音声通話は上記の音声認識(ASR)と音声合成(TTS)の設定を使用します", "test": "音声通話テスト", diff --git a/src/renderer/src/i18n/locales/ru-ru.json b/src/renderer/src/i18n/locales/ru-ru.json index c518d8aa73..1780e307c7 100644 --- a/src/renderer/src/i18n/locales/ru-ru.json +++ b/src/renderer/src/i18n/locales/ru-ru.json @@ -1458,7 +1458,9 @@ "stopped": "[to be translated]:已停止语音播放", "segmented": "[to be translated]:分段", "segmented_play": "[to be translated]:分段播放", - "segmented_playback": "[to be translated]:分段播放" + "segmented_playback": "[to be translated]:分段播放", + "filter.emojis": "[to be translated]:过滤表情符号", + "show_progress_bar": "[to be translated]:显示TTS进度条" }, "voice": { "title": "[to be translated]:语音功能", @@ -1530,12 +1532,12 @@ "reset": "Сбросить", "saved": "Подсказка сохранена", "reset_done": "Подсказка сброшена", - "info": "Эта подсказка будет направлять ответы ИИ в режиме голосового вызова", - "language_info": "Нажмите кнопку сброса, чтобы получить стандартную подсказку для текущего языка" + "info": "Эта подсказка будет направлять ответы ИИ в режиме голосового вызова" }, "asr_tts_info": "Голосовой вызов использует настройки распознавания речи (ASR) и синтеза речи (TTS), указанные выше", "test": "Тестировать голосовой вызов", - "test_info": "Используйте кнопку голосового вызова справа от поля ввода для тестирования" + "test_info": "Используйте кнопку голосового вызова справа от поля ввода для тестирования", + "welcome_message": "[to be translated]:您好,我是您的AI助手,请长按说话按钮进行对话。" } }, "translate": { diff --git a/src/renderer/src/i18n/locales/zh-tw.json b/src/renderer/src/i18n/locales/zh-tw.json index 339f938cf6..81d4a1355d 100644 --- a/src/renderer/src/i18n/locales/zh-tw.json +++ b/src/renderer/src/i18n/locales/zh-tw.json @@ -1458,7 +1458,9 @@ "stopped": "[to be translated]:已停止语音播放", "segmented": "[to be translated]:分段", "segmented_play": "[to be translated]:分段播放", - "segmented_playback": "[to be translated]:分段播放" + "segmented_playback": "[to be translated]:分段播放", + "filter.emojis": "[to be translated]:过滤表情符号", + "show_progress_bar": "[to be translated]:显示TTS进度条" }, "voice": { "title": "[to be translated]:语音功能", @@ -1530,12 +1532,12 @@ "reset": "重置", "saved": "提示詞已保存", "reset_done": "提示詞已重置", - "info": "此提示詞將指導AI在語音通話模式下的回覆方式", - "language_info": "點擊重置按鈕可獲取當前語言的預設提示詞" + "info": "此提示詞將指導AI在語音通話模式下的回覆方式" }, "asr_tts_info": "語音通話使用上面的語音識別(ASR)和語音合成(TTS)設置", "test": "測試通話", - "test_info": "請使用輸入框右側的語音通話按鈕進行測試" + "test_info": "請使用輸入框右側的語音通話按鈕進行測試", + "welcome_message": "[to be translated]:您好,我是您的AI助手,请长按说话按钮进行对话。" } }, "translate": { diff --git a/src/renderer/src/pages/settings/TTSSettings/TTSSettings.tsx b/src/renderer/src/pages/settings/TTSSettings/TTSSettings.tsx index dcddbf0e94..a45f8ed69c 100644 --- a/src/renderer/src/pages/settings/TTSSettings/TTSSettings.tsx +++ b/src/renderer/src/pages/settings/TTSSettings/TTSSettings.tsx @@ -1043,7 +1043,11 @@ const TTSSettings: FC = () => { /> {t('settings.voice.help')} - + {t('settings.voice.learn_more')} diff --git a/src/renderer/src/pages/settings/TTSSettings/VoiceCallSettings.tsx b/src/renderer/src/pages/settings/TTSSettings/VoiceCallSettings.tsx index dd24729eda..0b647824ac 100644 --- a/src/renderer/src/pages/settings/TTSSettings/VoiceCallSettings.tsx +++ b/src/renderer/src/pages/settings/TTSSettings/VoiceCallSettings.tsx @@ -66,7 +66,6 @@ const VoiceCallSettings: FC = () => { - {/* 模型选择 */} @@ -75,7 +74,11 @@ const VoiceCallSettings: FC = () => { disabled={!voiceCallEnabled} icon={ voiceCallModel ? ( - + ) : ( ) @@ -88,7 +91,6 @@ const VoiceCallSettings: FC = () => { {t('settings.voice_call.model.info')} - {/* 提示词设置 */} { rows={8} placeholder={t('settings.voice_call.prompt.placeholder')} /> + {t('settings.voice_call.prompt.info')} - {t('settings.voice_call.prompt.info')} - - - {/* ASR 和 TTS 设置提示 */} - - {t('settings.voice_call.asr_tts_info')} - - - {/* 测试按钮 */} - - @@ -142,39 +126,40 @@ const InfoText = styled.div` ` const ModelIcon = styled.img` - width: 16px; - height: 16px; - margin-right: 8px; + width: 20px; + height: 20px; + border-radius: 10px; + margin-top: 4px; ` -const Alert = styled.div<{ type: 'info' | 'warning' | 'error' | 'success' }>` - padding: 8px 12px; - border-radius: 4px; - background-color: ${(props) => - props.type === 'info' - ? 'var(--color-info-bg)' - : props.type === 'warning' - ? 'var(--color-warning-bg)' - : props.type === 'error' - ? 'var(--color-error-bg)' - : 'var(--color-success-bg)'}; - border: 1px solid - ${(props) => - props.type === 'info' - ? 'var(--color-info-border)' - : props.type === 'warning' - ? 'var(--color-warning-border)' - : props.type === 'error' - ? 'var(--color-error-border)' - : 'var(--color-success-border)'}; - color: ${(props) => - props.type === 'info' - ? 'var(--color-info-text)' - : props.type === 'warning' - ? 'var(--color-warning-text)' - : props.type === 'error' - ? 'var(--color-error-text)' - : 'var(--color-success-text)'}; -` +// const Alert = styled.div<{ type: 'info' | 'warning' | 'error' | 'success' }>` +// padding: 8px 12px; +// border-radius: 4px; +// background-color: ${(props) => +// props.type === 'info' +// ? 'var(--color-info-bg)' +// : props.type === 'warning' +// ? 'var(--color-warning-bg)' +// : props.type === 'error' +// ? 'var(--color-error-bg)' +// : 'var(--color-success-bg)'}; +// border: 1px solid +// ${(props) => +// props.type === 'info' +// ? 'var(--color-info-border)' +// : props.type === 'warning' +// ? 'var(--color-warning-border)' +// : props.type === 'error' +// ? 'var(--color-error-border)' +// : 'var(--color-success-border)'}; +// color: ${(props) => +// props.type === 'info' +// ? 'var(--color-info-text)' +// : props.type === 'warning' +// ? 'var(--color-warning-text)' +// : props.type === 'error' +// ? 'var(--color-error-text)' +// : 'var(--color-success-text)'}; +// ` export default VoiceCallSettings diff --git a/yarn.lock b/yarn.lock index cceefb5303..4bdda97931 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3946,7 +3946,6 @@ __metadata: axios: "npm:^1.7.3" babel-plugin-styled-components: "npm:^2.1.4" browser-image-compression: "npm:^2.0.2" - bufferutil: "npm:^4.0.9" color: "npm:^5.0.0" dayjs: "npm:^1.11.11" dexie: "npm:^4.0.8" @@ -4024,11 +4023,9 @@ __metadata: turndown-plugin-gfm: "npm:^1.0.2" typescript: "npm:^5.6.2" undici: "npm:^7.4.0" - utf-8-validate: "npm:^6.0.5" uuid: "npm:^10.0.0" vite: "npm:^5.0.12" webdav: "npm:^5.8.0" - ws: "npm:^8.18.1" zipread: "npm:^1.3.3" languageName: unknown linkType: soft @@ -4952,16 +4949,6 @@ __metadata: languageName: node linkType: hard -"bufferutil@npm:^4.0.9": - version: 4.0.9 - resolution: "bufferutil@npm:4.0.9" - dependencies: - node-gyp: "npm:latest" - node-gyp-build: "npm:^4.3.0" - checksum: 10c0/f8a93279fc9bdcf32b42eba97edc672b39ca0fe5c55a8596099886cffc76ea9dd78e0f6f51ecee3b5ee06d2d564aa587036b5d4ea39b8b5ac797262a363cdf7d - languageName: node - linkType: hard - "builder-util-runtime@npm:9.2.4": version: 9.2.4 resolution: "builder-util-runtime@npm:9.2.4" @@ -12140,17 +12127,6 @@ __metadata: languageName: node linkType: hard -"node-gyp-build@npm:^4.3.0": - version: 4.8.4 - resolution: "node-gyp-build@npm:4.8.4" - bin: - node-gyp-build: bin.js - node-gyp-build-optional: optional.js - node-gyp-build-test: build-test.js - checksum: 10c0/444e189907ece2081fe60e75368784f7782cfddb554b60123743dfb89509df89f1f29c03bbfa16b3a3e0be3f48799a4783f487da6203245fa5bed239ba7407e1 - languageName: node - linkType: hard - "node-gyp@npm:^9.1.0": version: 9.4.1 resolution: "node-gyp@npm:9.4.1" @@ -16679,16 +16655,6 @@ __metadata: languageName: node linkType: hard -"utf-8-validate@npm:^6.0.5": - version: 6.0.5 - resolution: "utf-8-validate@npm:6.0.5" - dependencies: - node-gyp: "npm:latest" - node-gyp-build: "npm:^4.3.0" - checksum: 10c0/6dc63c513adb001e47a51819072cdd414158430091c49c21d4947ea99f16df5167b671f680df8fb2b6f2ae6a7f30264b4ec111bd3e573720dfe371da1ab99a81 - languageName: node - linkType: hard - "utf8-byte-length@npm:^1.0.1": version: 1.0.5 resolution: "utf8-byte-length@npm:1.0.5" @@ -17123,7 +17089,7 @@ __metadata: languageName: node linkType: hard -"ws@npm:^8.13.0, ws@npm:^8.14.1, ws@npm:^8.18.0, ws@npm:^8.18.1": +"ws@npm:^8.13.0, ws@npm:^8.14.1, ws@npm:^8.18.0": version: 8.18.1 resolution: "ws@npm:8.18.1" peerDependencies: