Skip to content

Commit 0d22a6e

Browse files
committed
fix:修复前端选择绑定问题
1 parent 0eaac58 commit 0d22a6e

File tree

5 files changed

+82
-151
lines changed

5 files changed

+82
-151
lines changed

pom.xml

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -221,17 +221,18 @@
221221
<artifactId>nls-sdk-tts</artifactId>
222222
<version>2.2.17</version>
223223
</dependency>
224-
<dependency>
225-
<groupId>cn.xfyun</groupId>
226-
<artifactId>websdk-java-speech</artifactId>
227-
<version>3.0.2</version>
228-
</dependency>
229224
<!-- 阿里云ASR -->
230225
<dependency>
231226
<groupId>com.alibaba</groupId>
232227
<artifactId>dashscope-sdk-java</artifactId>
233228
<version>2.20.2</version>
234229
</dependency>
230+
<!-- 讯飞 -->
231+
<dependency>
232+
<groupId>cn.xfyun</groupId>
233+
<artifactId>websdk-java-speech</artifactId>
234+
<version>3.0.2</version>
235+
</dependency>
235236
<!-- COZE -->
236237
<dependency>
237238
<groupId>com.coze</groupId>

src/main/java/com/xiaozhi/dialogue/tts/factory/TtsServiceFactory.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
package com.xiaozhi.dialogue.tts.factory;
22

33
import com.xiaozhi.dialogue.tts.TtsService;
4-
import com.xiaozhi.dialogue.tts.providers.AliyunTtsService;
5-
import com.xiaozhi.dialogue.tts.providers.EdgeTtsService;
6-
import com.xiaozhi.dialogue.tts.providers.VolcengineTtsService;
7-
import com.xiaozhi.dialogue.tts.providers.XfyunTtsService;
4+
import com.xiaozhi.dialogue.tts.providers.*;
85
import com.xiaozhi.entity.SysConfig;
96

107
import org.slf4j.Logger;

web/src/components/ConfigManager.vue

Lines changed: 3 additions & 115 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,7 @@
152152
import axios from '@/services/axios'
153153
import api from '@/services/api'
154154
import mixin from '@/mixins/index'
155+
import { configTypeMap } from '@/config/providerConfig'
155156
156157
export default {
157158
name: 'ConfigManager',
@@ -192,119 +193,6 @@ export default {
192193
spark: "请输入星火大模型官方模型名称,如:Lite, Pro, Max等"
193194
},
194195
195-
// 配置类型信息
196-
configTypeMap: {
197-
llm: {
198-
label: '模型',
199-
// 模型类别选项
200-
typeOptions: [
201-
{ label: 'OpenAI', value: 'openai', key: '0' },
202-
{ label: 'Ollama', value: 'ollama', key: '1' },
203-
{ label: 'Spark', value: 'spark', key: '2' },
204-
{ label: 'Zhipu', value: 'zhipu', key: '3' },
205-
{ label: 'AliYun', value: 'aliyun', key: '4'},
206-
{ label: 'Doubao', value: 'doubao', key: '5'},
207-
{ label: 'DeepSeek', value: 'deepseek', key: '6'},
208-
{ label: 'ChatGLM', value: 'chatglm', key: '7'},
209-
{ label: 'Gemini', value: 'gemini', key: '8'},
210-
{ label: 'LMStudio', value: 'lmstudio', key: '9'},
211-
{ label: 'Fastgpt', value: 'fastgpt', key: '10'},
212-
{ label: 'Xinference', value: 'xinference', key: '11'},
213-
],
214-
// 各类别对应的参数字段定义
215-
typeFields: {
216-
openai: [
217-
{ name: 'apiKey', label: 'API Key', required: true, span: 12 },
218-
{ name: 'apiUrl', label: 'API URL', required: true, span: 12, suffix: '/chat/completions' },
219-
],
220-
ollama: [
221-
{ name: 'apiUrl', label: 'API URL', required: true, span: 12, suffix: '/api/chat', defaultUrl:"http://localhost:11434" }
222-
],
223-
spark: [
224-
{ name: 'apiKey', label: 'API Key', required: true, span: 8 },
225-
{ name: 'apiUrl', label: 'API URL', required: true, span: 12, suffix: '/chat/completions', defaultUrl:"https://spark-api-open.xf-yun.com/v1" }
226-
],
227-
zhipu: [
228-
{ name: 'apiKey', label: 'API Secret', required: true, span: 8 },
229-
{ name: 'apiUrl', label: 'API URL', required: true, span: 12, suffix: '/chat/completions', defaultUrl:"https://open.bigmodel.cn/api/paas/v4" }
230-
],
231-
aliyun: [
232-
{ name: 'apiKey', label: 'API Secret', required: true, span: 8 },
233-
{ name: 'apiUrl', label: 'API URL', required: true, span: 12, suffix: '/chat/completions', defaultUrl:"https://dashscope.aliyuncs.com/compatible-mode/v1" }
234-
],
235-
doubao: [
236-
{ name: 'apiKey', label: 'API Secret', required: true, span: 8 },
237-
{ name: 'apiUrl', label: 'API URL', required: true, span: 12, suffix: '/chat/completions', defaultUrl:"https://ark.cn-beijing.volces.com/api/v3" }
238-
],
239-
deepseek: [
240-
{ name: 'apiKey', label: 'API Secret', required: true, span: 8 },
241-
{ name: 'apiUrl', label: 'API URL', required: true, span: 12, suffix: '/chat/completions', defaultUrl:"https://api.deepseek.com" }
242-
],
243-
chatglm: [
244-
{ name: 'apiKey', label: 'API Secret', required: true, span: 8 },
245-
{ name: 'apiUrl', label: 'API URL', required: true, span: 12, suffix: '/chat/completions', defaultUrl:"https://open.bigmodel.cn/api/paas/v4/" }
246-
],
247-
gemini: [
248-
{ name: 'apiKey', label: 'API Secret', required: true, span: 8 },
249-
{ name: 'apiUrl', label: 'API URL', required: true, span: 12, suffix: '/chat/completions', defaultUrl:"https://generativelanguage.googleapis.com/v1beta/" }
250-
],
251-
lmstudio: [
252-
{ name: 'apiUrl', label: 'API URL', required: true, span: 12, suffix: '/chat/completions', defaultUrl:"http://localhost:1234/v1" }
253-
],
254-
fastgpt: [
255-
{ name: 'apiKey', label: 'API Secret', required: true, span: 8 },
256-
{ name: 'apiUrl', label: 'API URL', required: true, span: 12, suffix: '/chat/completions', defaultUrl:"http://localhost:3000/api/v1" }
257-
],
258-
xinference: [
259-
{ name: 'apiKey', label: 'API Secret', required: true, span: 8 },
260-
{ name: 'apiUrl', label: 'API URL', required: true, span: 12, suffix: '/chat/completions', defaultUrl:"http://localhost:9997/v1" }
261-
]
262-
}
263-
},
264-
stt: {
265-
label: '语音识别',
266-
typeOptions: [
267-
{ label: 'Tencent', value: 'tencent', key: '0' },
268-
{ label: 'Aliyun', value: 'aliyun', key: '1' },
269-
{ label: 'FunASR', value: 'funasr', key: '2' }
270-
],
271-
typeFields: {
272-
tencent: [
273-
{ name: 'appId', label: 'App Id', required: true, span: 12 },
274-
{ name: 'apiKey', label: 'Secret Id', required: true, span: 12 },
275-
{ name: 'apiSecret', label: 'Secret Key', required: true, span: 12 },
276-
],
277-
aliyun: [
278-
{ name: 'apiKey', label: 'API Key', required: true, span: 12 },
279-
],
280-
funasr: [
281-
{ name: 'apiUrl', label: 'Websocket URL', required: true, span: 12, defaultUrl:"ws://127.0.0.1:10095" }
282-
]
283-
}
284-
},
285-
tts: {
286-
label: '语音合成',
287-
typeOptions: [
288-
{ label: 'Tencent', value: 'tencent', key: '0' },
289-
{ label: 'Aliyun', value: 'aliyun', key: '1' },
290-
{ label: 'Volcengine(doubao)', value: 'volcengine', key: '2' }
291-
],
292-
typeFields: {
293-
tencent: [
294-
{ name: 'appId', label: 'App Id', required: true, span: 12 },
295-
{ name: 'apiKey', label: 'Secret Id', required: true, span: 12 },
296-
{ name: 'apiSecret', label: 'Secret Key', required: true, span: 12 },
297-
],
298-
aliyun: [
299-
{ name: 'apiKey', label: 'API Key', required: true, span: 12 },
300-
],
301-
volcengine: [
302-
{ name: 'appId', label: 'App Id', required: true, span: 12 },
303-
{ name: 'apiKey', label: 'Access Token', required: true, span: 12 }
304-
]
305-
}
306-
}
307-
},
308196
columns: [
309197
{
310198
title: '类别',
@@ -364,7 +252,7 @@ export default {
364252
computed: {
365253
// 当前配置类型的信息
366254
configTypeInfo() {
367-
return this.configTypeMap[this.configType] || {};
255+
return configTypeMap[this.configType] || {};
368256
},
369257
// 当前配置类型的选项
370258
typeOptions() {
@@ -439,7 +327,7 @@ export default {
439327
440328
//填写llm默认url
441329
if (this.configType === 'llm') {
442-
const apiUrlField = this.configTypeMap.llm.typeFields[value].find(item => item.name === 'apiUrl');
330+
const apiUrlField = configTypeMap.llm.typeFields[value].find(item => item.name === 'apiUrl');
443331
if (apiUrlField && apiUrlField.defaultUrl) {
444332
newValues.apiUrl = apiUrlField.defaultUrl;
445333
}

web/src/config/providerConfig.js

Lines changed: 65 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -11,33 +11,73 @@ export const configTypeMap = {
1111
typeOptions: [
1212
{ label: 'OpenAI', value: 'openai', key: '0' },
1313
{ label: 'Ollama', value: 'ollama', key: '1' },
14-
{ label: 'Qwen', value: 'qwen', key: '2' },
15-
{ label: 'Spark', value: 'spark', key: '3' }
14+
{ label: 'Spark', value: 'spark', key: '2' },
15+
{ label: 'Zhipu', value: 'zhipu', key: '3' },
16+
{ label: 'AliYun', value: 'aliyun', key: '4'},
17+
{ label: 'Doubao', value: 'doubao', key: '5'},
18+
{ label: 'DeepSeek', value: 'deepseek', key: '6'},
19+
{ label: 'ChatGLM', value: 'chatglm', key: '7'},
20+
{ label: 'Gemini', value: 'gemini', key: '8'},
21+
{ label: 'LMStudio', value: 'lmstudio', key: '9'},
22+
{ label: 'Fastgpt', value: 'fastgpt', key: '10'},
23+
{ label: 'Xinference', value: 'xinference', key: '11'},
1624
],
1725
// 各类别对应的参数字段定义
1826
typeFields: {
1927
openai: [
2028
{ name: 'apiKey', label: 'API Key', required: true, span: 12 },
21-
{ name: 'apiUrl', label: 'API URL', required: false, span: 12, suffix: '/chat/completions' },
29+
{ name: 'apiUrl', label: 'API URL', required: true, span: 12, suffix: '/chat/completions' },
2230
],
2331
ollama: [
24-
{ name: 'apiUrl', label: 'API URL', required: false, span: 12, suffix: '/api/chat' }
25-
],
26-
qwen: [
27-
{ name: 'apiKey', label: 'API Key', required: true, span: 12 },
28-
{ name: 'apiUrl', label: 'API URL', required: false, span: 12, suffix: '/chat/completions' }
32+
{ name: 'apiUrl', label: 'API URL', required: true, span: 12, suffix: '/api/chat', defaultUrl:"http://localhost:11434" }
2933
],
3034
spark: [
31-
{ name: 'apiSecret', label: 'API Secret', required: true, span: 8 },
32-
{ name: 'apiUrl', label: 'API URL', required: false, span: 12, suffix: '/chat/completions' }
35+
{ name: 'apiKey', label: 'API Key', required: true, span: 8 },
36+
{ name: 'apiUrl', label: 'API URL', required: true, span: 12, suffix: '/chat/completions', defaultUrl:"https://spark-api-open.xf-yun.com/v1" }
37+
],
38+
zhipu: [
39+
{ name: 'apiKey', label: 'API Secret', required: true, span: 8 },
40+
{ name: 'apiUrl', label: 'API URL', required: true, span: 12, suffix: '/chat/completions', defaultUrl:"https://open.bigmodel.cn/api/paas/v4" }
41+
],
42+
aliyun: [
43+
{ name: 'apiKey', label: 'API Secret', required: true, span: 8 },
44+
{ name: 'apiUrl', label: 'API URL', required: true, span: 12, suffix: '/chat/completions', defaultUrl:"https://dashscope.aliyuncs.com/compatible-mode/v1" }
45+
],
46+
doubao: [
47+
{ name: 'apiKey', label: 'API Secret', required: true, span: 8 },
48+
{ name: 'apiUrl', label: 'API URL', required: true, span: 12, suffix: '/chat/completions', defaultUrl:"https://ark.cn-beijing.volces.com/api/v3" }
49+
],
50+
deepseek: [
51+
{ name: 'apiKey', label: 'API Secret', required: true, span: 8 },
52+
{ name: 'apiUrl', label: 'API URL', required: true, span: 12, suffix: '/chat/completions', defaultUrl:"https://api.deepseek.com" }
53+
],
54+
chatglm: [
55+
{ name: 'apiKey', label: 'API Secret', required: true, span: 8 },
56+
{ name: 'apiUrl', label: 'API URL', required: true, span: 12, suffix: '/chat/completions', defaultUrl:"https://open.bigmodel.cn/api/paas/v4/" }
57+
],
58+
gemini: [
59+
{ name: 'apiKey', label: 'API Secret', required: true, span: 8 },
60+
{ name: 'apiUrl', label: 'API URL', required: true, span: 12, suffix: '/chat/completions', defaultUrl:"https://generativelanguage.googleapis.com/v1beta/" }
61+
],
62+
lmstudio: [
63+
{ name: 'apiUrl', label: 'API URL', required: true, span: 12, suffix: '/chat/completions', defaultUrl:"http://localhost:1234/v1" }
64+
],
65+
fastgpt: [
66+
{ name: 'apiKey', label: 'API Secret', required: true, span: 8 },
67+
{ name: 'apiUrl', label: 'API URL', required: true, span: 12, suffix: '/chat/completions', defaultUrl:"http://localhost:3000/api/v1" }
68+
],
69+
xinference: [
70+
{ name: 'apiKey', label: 'API Secret', required: true, span: 8 },
71+
{ name: 'apiUrl', label: 'API URL', required: true, span: 12, suffix: '/chat/completions', defaultUrl:"http://localhost:9997/v1" }
3372
]
3473
}
3574
},
3675
stt: {
3776
label: '语音识别',
3877
typeOptions: [
3978
{ label: 'Tencent', value: 'tencent', key: '0' },
40-
{ label: 'Aliyun', value: 'aliyun', key: '1' }
79+
{ label: 'Aliyun', value: 'aliyun', key: '1' },
80+
{ label: 'Xfyun', value: 'xfyun', key: '2'}
4181
],
4282
typeFields: {
4383
tencent: [
@@ -46,25 +86,25 @@ export const configTypeMap = {
4686
{ name: 'apiSecret', label: 'Secret Key', required: true, span: 12 },
4787
],
4888
aliyun: [
49-
{ name: 'apiKey', label: 'APP Key', required: true, span: 12 },
89+
{ name: 'apiKey', label: 'App Key', required: true, span: 12 },
5090
{ name: 'appId', label: 'Access Key Id', required: true, span: 12 },
5191
{ name: 'apiSecret', label: 'Access Key Secret', required: true, span: 12 }
92+
],
93+
xfyun: [
94+
{ name: 'appId', label: 'App Id', required: true, span: 12 },
95+
{ name: 'apiSecret', label: 'Api Secret', required: true, span: 12 },
96+
{ name: 'apiKey', label: 'Api Key', required: true, span: 12 }
5297
]
5398
}
5499
},
55100
tts: {
56101
label: '语音合成',
57102
typeOptions: [
58-
{ label: 'Tencent', value: 'tencent', key: '0' },
59-
{ label: 'Aliyun', value: 'aliyun', key: '1' },
60-
{ label: 'Volcengine(doubao)', value: 'volcengine', key: '2' }
103+
{ label: 'Aliyun', value: 'aliyun', key: '0' },
104+
{ label: 'Volcengine(doubao)', value: 'volcengine', key: '1' },
105+
{ label: 'Xfyun', value: 'xfyun', key: '2' }
61106
],
62107
typeFields: {
63-
tencent: [
64-
{ name: 'appId', label: 'App Id', required: true, span: 12 },
65-
{ name: 'apiKey', label: 'Secret Id', required: true, span: 12 },
66-
{ name: 'apiSecret', label: 'Secret Key', required: true, span: 12 },
67-
],
68108
aliyun: [
69109
{ name: 'apiKey', label: 'API Key', required: true, span: 12 },
70110
{ name: 'appId', label: 'Access Key Id', required: true, span: 12 },
@@ -73,6 +113,11 @@ export const configTypeMap = {
73113
volcengine: [
74114
{ name: 'appId', label: 'App Id', required: true, span: 12 },
75115
{ name: 'apiKey', label: 'Access Token', required: true, span: 12 }
116+
],
117+
xfyun: [
118+
{ name: 'appId', label: 'App Id', required: true, span: 12 },
119+
{ name: 'apiSecret', label: 'Api Secret', required: true, span: 12 },
120+
{ name: 'apiKey', label: 'Api Key', required: true, span: 12 }
76121
]
77122
}
78123
}

web/src/views/page/Role.vue

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@
8585
<a-select-option value="edge">微软Edge</a-select-option>
8686
<a-select-option value="aliyun">阿里云</a-select-option>
8787
<a-select-option value="volcengine">火山引擎(豆包)</a-select-option>
88-
<a-select-option value="xfyun">讯飞云</a-select-option>
88+
<a-select-option value="xfyun">讯飞云</a-select-option>
8989
</a-select>
9090
</a-form-item>
9191
</a-col>
@@ -234,10 +234,10 @@ export default {
234234
},
235235
],
236236
// 语音相关
237-
edgeVoices: [],
238-
aliyunVoices: [],
239-
volcengineVoices: [], // 新增火山引擎语音列表
240-
xfyunVoices: [],
237+
edgeVoices: [], // Edge语音列表
238+
aliyunVoices: [], // 阿里云语音列表
239+
volcengineVoices: [], // 火山引擎语音列表
240+
xfyunVoices: [], // 讯飞语音列表
241241
voiceLoading: false, // 语音列表加载状态
242242
selectedProvider: 'edge', // 默认使用Edge语音
243243
selectedGender: '', // 存储当前选择的性别
@@ -324,8 +324,8 @@ export default {
324324
} else if (this.selectedProvider === 'volcengine') {
325325
return this.volcengineVoices;
326326
} else if (this.selectedProvider === 'xfyun') {
327-
return this.xfyunVoices;
328-
}
327+
return this.xfyunVoices;
328+
}
329329
return [];
330330
},
331331
filteredVoices() {

0 commit comments

Comments
 (0)