chore: wip

This commit is contained in:
DDMeaqua 2024-10-12 14:39:25 +08:00
parent d7eee52a44
commit 5999604df4
6 changed files with 56 additions and 13 deletions

View File

@ -10,7 +10,8 @@ import React, {
} from "react";
import SendWhiteIcon from "../icons/send-white.svg";
import VoiceWhiteIcon from "../icons/voice-white.svg";
import VoiceOpenIcon from "../icons/vioce-open.svg";
import VoiceCloseIcon from "../icons/vioce-close.svg";
import BrainIcon from "../icons/brain.svg";
import RenameIcon from "../icons/rename.svg";
import ExportIcon from "../icons/share.svg";
@ -830,7 +831,7 @@ export function ChatActions(props: {
isListening ? await stopListening() : await startListening()
}
text={isListening ? Locale.Chat.StopSpeak : Locale.Chat.StartSpeak}
icon={<VoiceWhiteIcon />}
icon={isListening ? <VoiceOpenIcon /> : <VoiceCloseIcon />}
/>
)}
</div>

View File

@ -2,7 +2,7 @@ import { STTConfig, STTConfigValidator } from "../store";
import Locale from "../locales";
import { ListItem, Select } from "./ui-lib";
import { DEFAULT_STT_ENGINES } from "../constant";
import { DEFAULT_STT_ENGINES, DEFAULT_STT_LANGUAGES } from "../constant";
import { isFirefox } from "../utils";
export function STTConfigList(props: {
@ -25,7 +25,6 @@ export function STTConfigList(props: {
}
></input>
</ListItem>
{!isFirefox() && (
<ListItem title={Locale.Settings.STT.Engine.Title}>
<Select
value={props.sttConfig.engine}
@ -38,7 +37,32 @@ export function STTConfigList(props: {
);
}}
>
{DEFAULT_STT_ENGINES.map((v, i) => (
{isFirefox()
? DEFAULT_STT_ENGINES.filter((v) => v !== "Web Speech API").map(
(v, i) => (
<option value={v} key={i}>
{v}
</option>
),
)
: DEFAULT_STT_ENGINES.map((v, i) => (
<option value={v} key={i}>
{v}
</option>
))}
</Select>
</ListItem>
{props.sttConfig.engine === "Web Speech API" && !isFirefox() && (
<ListItem title="语言选择">
<Select
value={props.sttConfig.language}
onChange={(e) => {
props.updateConfig(
(config) => (config.language = e.currentTarget.value),
);
}}
>
{DEFAULT_STT_LANGUAGES.map((v, i) => (
<option value={v} key={i}>
{v}
</option>

View File

@ -271,8 +271,22 @@ export const DEFAULT_TTS_VOICES = [
"shimmer",
];
export const DEFAULT_STT_ENGINE = "WebAPI";
export const DEFAULT_STT_ENGINES = ["WebAPI", "OpenAI Whisper"];
export const DEFAULT_STT_ENGINE = "Web Speech API";
export const DEFAULT_STT_ENGINES = ["Web Speech API", "OpenAI Whisper"];
export const DEFAULT_STT_LANGUAGE = "zh-CN";
export const DEFAULT_STT_LANGUAGES = [
"zh-CN", // 中文(简体)
"en-US", // 英文
"fr-FR", // 法文
"de-DE", // 德文
"es-ES", // 西班牙文
"it-IT", // 意大利文
"ja-JP", // 日文
"ko-KR", // 韩文
"ru-RU", // 俄文
"pt-BR", // 葡萄牙文(巴西)
"ar-SA", // 阿拉伯文
];
export const FIREFOX_DEFAULT_STT_ENGINE = "OpenAI Whisper";
const openaiModels = [

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24"><g fill="none" stroke="currentColor" stroke-width="1.5"><path d="M7 8a5 5 0 0 1 10 0v3a5 5 0 0 1-10 0z"/><path stroke-linecap="round" d="M11 8h2m-3 3h4m6-1v1a8 8 0 1 1-16 0v-1m8 9v3"/></g></svg>

After

Width:  |  Height:  |  Size: 277 B

1
app/icons/vioce-open.svg Normal file
View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24"><g fill="currentColor" fill-rule="evenodd" clip-rule="evenodd"><path d="M4 9a.75.75 0 0 1 .75.75v1a7.25 7.25 0 1 0 14.5 0v-1a.75.75 0 0 1 1.5 0v1a8.75 8.75 0 0 1-8 8.718v2.282a.75.75 0 0 1-1.5 0v-2.282a8.75 8.75 0 0 1-8-8.718v-1A.75.75 0 0 1 4 9"/><path d="M12 2a5.75 5.75 0 0 0-5.75 5.75v3a5.75 5.75 0 0 0 11.5 0v-3A5.75 5.75 0 0 0 12 2m2 9.5a.75.75 0 0 0 0-1.5h-4a.75.75 0 0 0 0 1.5zm-.25-3.75a.75.75 0 0 1-.75.75h-2A.75.75 0 0 1 11 7h2a.75.75 0 0 1 .75.75"/></g></svg>

After

Width:  |  Height:  |  Size: 554 B

View File

@ -7,6 +7,7 @@ import {
DEFAULT_SIDEBAR_WIDTH,
DEFAULT_STT_ENGINE,
DEFAULT_STT_ENGINES,
DEFAULT_STT_LANGUAGE,
DEFAULT_TTS_ENGINE,
DEFAULT_TTS_ENGINES,
DEFAULT_TTS_MODEL,
@ -94,6 +95,7 @@ export const DEFAULT_CONFIG = {
sttConfig: {
enable: true,
engine: DEFAULT_STT_ENGINE,
language: DEFAULT_STT_LANGUAGE,
},
};