Skip to content

Commit 6c1451f

Browse files
committed
refactor: Support different types of aliyun stt model
1 parent 2143763 commit 6c1451f

File tree

15 files changed

+225
-8
lines changed

15 files changed

+225
-8
lines changed

apps/locales/en_US/LC_MESSAGES/django.po

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8805,4 +8805,13 @@ msgid "File upload is not enabled"
88058805
msgstr ""
88068806

88078807
msgid "Blocked unsafe redirect to internal host"
8808+
msgstr ""
8809+
8810+
msgid "Audio file recognition - Tongyi Qwen"
8811+
msgstr ""
8812+
8813+
msgid "Audio file recognition - Fun-ASR/Paraformer/SenseVoice"
8814+
msgstr ""
8815+
8816+
msgid "Qwen-Omni"
88088817
msgstr ""

apps/locales/zh_CN/LC_MESSAGES/django.po

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8931,4 +8931,14 @@ msgid "File upload is not enabled"
89318931
msgstr "文件上传未启用"
89328932

89338933
msgid "Blocked unsafe redirect to internal host"
8934-
msgstr "阻止不安全的重定向到内部主机"
8934+
msgstr "阻止不安全的重定向到内部主机"
8935+
msgstr "请输入Web根地址"
8936+
8937+
msgid "Audio file recognition - Tongyi Qwen"
8938+
msgstr "录音文件识别-通义千问"
8939+
8940+
msgid "Audio file recognition - Fun-ASR/Paraformer/SenseVoice"
8941+
msgstr "录音文件识别-Fun-ASR/Paraformer/SenseVoice"
8942+
8943+
msgid "Qwen-Omni"
8944+
msgstr "多模态"

apps/locales/zh_Hant/LC_MESSAGES/django.po

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8932,3 +8932,14 @@ msgstr "文件上傳未啟用"
89328932

89338933
msgid "Blocked unsafe redirect to internal host"
89348934
msgstr "阻止不安全的重定向到內部主機"
8935+
8936+
msgstr "請輸入Web根地址"
8937+
8938+
msgid "Audio file recognition - Tongyi Qwen"
8939+
msgstr "錄音文件識別-通義千問"
8940+
8941+
msgid "Audio file recognition - Fun-ASR/Paraformer/SenseVoice"
8942+
msgstr "錄音文件識別-Fun-ASR/Paraformer/SenseVoice"
8943+
8944+
msgid "Qwen-Omni"
8945+
msgstr "多模態"

apps/models_provider/impl/aliyun_bai_lian_model_provider/aliyun_bai_lian_model_provider.py

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,26 +11,28 @@
1111
from common.utils.common import get_file_content
1212
from models_provider.base_model_provider import ModelProvideInfo, ModelTypeConst, ModelInfo, IModelProvider, \
1313
ModelInfoManage
14-
from models_provider.impl.aliyun_bai_lian_model_provider.credential.asr_stt import AliyunBaiLianAsrSTTModelCredential
14+
from models_provider.impl.aliyun_bai_lian_model_provider.credential.stt.asr_stt import AliyunBaiLianAsrSTTModelCredential
1515
from models_provider.impl.aliyun_bai_lian_model_provider.credential.embedding import \
1616
AliyunBaiLianEmbeddingCredential
1717
from models_provider.impl.aliyun_bai_lian_model_provider.credential.image import QwenVLModelCredential
1818
from models_provider.impl.aliyun_bai_lian_model_provider.credential.itv import ImageToVideoModelCredential
1919
from models_provider.impl.aliyun_bai_lian_model_provider.credential.llm import BaiLianLLMModelCredential
20-
from models_provider.impl.aliyun_bai_lian_model_provider.credential.omni_stt import AliyunBaiLianOmiSTTModelCredential
20+
from models_provider.impl.aliyun_bai_lian_model_provider.credential.stt.omni_stt import AliyunBaiLianOmiSTTModelCredential
2121
from models_provider.impl.aliyun_bai_lian_model_provider.credential.reranker import \
2222
AliyunBaiLianRerankerCredential
23-
from models_provider.impl.aliyun_bai_lian_model_provider.credential.stt import AliyunBaiLianSTTModelCredential
23+
from models_provider.impl.aliyun_bai_lian_model_provider.credential.stt import AliyunBaiLianSTTModelCredential, \
24+
AliyunBaiLianDefaultSTTModelCredential
2425
from models_provider.impl.aliyun_bai_lian_model_provider.credential.tti import QwenTextToImageModelCredential
2526
from models_provider.impl.aliyun_bai_lian_model_provider.credential.tts import AliyunBaiLianTTSModelCredential
2627
from models_provider.impl.aliyun_bai_lian_model_provider.credential.ttv import TextToVideoModelCredential
27-
from models_provider.impl.aliyun_bai_lian_model_provider.model.asr_stt import AliyunBaiLianAsrSpeechToText
28+
from models_provider.impl.aliyun_bai_lian_model_provider.model.stt.asr_stt import AliyunBaiLianAsrSpeechToText
2829
from models_provider.impl.aliyun_bai_lian_model_provider.model.embedding import AliyunBaiLianEmbedding
2930
from models_provider.impl.aliyun_bai_lian_model_provider.model.image import QwenVLChatModel
3031
from models_provider.impl.aliyun_bai_lian_model_provider.model.llm import BaiLianChatModel
31-
from models_provider.impl.aliyun_bai_lian_model_provider.model.omni_stt import AliyunBaiLianOmiSpeechToText
32+
from models_provider.impl.aliyun_bai_lian_model_provider.model.stt.omni_stt import AliyunBaiLianOmiSpeechToText
3233
from models_provider.impl.aliyun_bai_lian_model_provider.model.reranker import AliyunBaiLianReranker
33-
from models_provider.impl.aliyun_bai_lian_model_provider.model.stt import AliyunBaiLianSpeechToText
34+
from models_provider.impl.aliyun_bai_lian_model_provider.model.stt import AliyunBaiLianSpeechToText, \
35+
AliyunBaiLianDefaultSpeechToText
3436
from models_provider.impl.aliyun_bai_lian_model_provider.model.tti import QwenTextToImageModel
3537
from models_provider.impl.aliyun_bai_lian_model_provider.model.tts import AliyunBaiLianTextToSpeech
3638
from maxkb.conf import PROJECT_DIR
@@ -43,6 +45,7 @@
4345
aliyun_bai_lian_stt_model_credential = AliyunBaiLianSTTModelCredential()
4446
aliyun_bai_lian_omi_stt_model_credential = AliyunBaiLianOmiSTTModelCredential()
4547
aliyun_bai_lian_asr_stt_model_credential = AliyunBaiLianAsrSTTModelCredential()
48+
aliyun_bai_lian_default_stt_model_credential = AliyunBaiLianDefaultSTTModelCredential()
4649
aliyun_bai_lian_embedding_model_credential = AliyunBaiLianEmbeddingCredential()
4750
aliyun_bai_lian_llm_model_credential = BaiLianLLMModelCredential()
4851
qwenvl_model_credential = QwenVLModelCredential()
@@ -137,7 +140,10 @@
137140
.append_model_info_list(module_info_tti_list)
138141
.append_default_model_info(module_info_tti_list[0])
139142
.append_default_model_info(model_info_list[1])
140-
.append_default_model_info(model_info_list[2])
143+
.append_default_model_info(ModelInfo('default',
144+
_('default'),
145+
ModelTypeConst.STT, aliyun_bai_lian_default_stt_model_credential,
146+
AliyunBaiLianDefaultSpeechToText))
141147
.append_default_model_info(model_info_list[3])
142148
.append_default_model_info(model_info_list[4])
143149
.append_default_model_info(model_info_list[0])
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# coding=utf-8
2+
"""
3+
@project: MaxKB
4+
@Author:niu
5+
@file: __init__.py.py
6+
@date:2025/12/5 15:11
7+
@desc:
8+
"""
9+
from .stt import AliyunBaiLianSTTModelCredential
10+
from .omni_stt import AliyunBaiLianOmiSTTModelCredential
11+
from .default_stt import AliyunBaiLianDefaultSTTModelCredential
12+
from .asr_stt import AliyunBaiLianAsrSTTModelCredential

apps/models_provider/impl/aliyun_bai_lian_model_provider/credential/asr_stt.py renamed to apps/models_provider/impl/aliyun_bai_lian_model_provider/credential/stt/asr_stt.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
from django.utils.translation import gettext as _
99
from common.utils.logger import maxkb_logger
1010

11+
1112
class AliyunBaiLianAsrSTTModelCredential(BaseForm, BaseModelCredential):
1213
api_url = forms.TextInputField(_('API URL'), required=True)
1314
api_key = forms.PasswordInputField(_('API Key'), required=True)
@@ -39,6 +40,7 @@ def is_valid(self,
3940

4041
try:
4142
model = provider.get_model(model_type, model_name, model_credential)
43+
model.check_auth()
4244
except Exception as e:
4345
maxkb_logger.error(f'Exception: {e}', exc_info=True)
4446
if isinstance(e, AppApiException):
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
# coding=utf-8
2+
"""
3+
@project: MaxKB
4+
@Author:niu
5+
@file: default_stt.py
6+
@date:2025/12/5 15:12
7+
@desc:
8+
"""
9+
from typing import Dict, Any
10+
11+
from common import forms
12+
from common.exception.app_exception import AppApiException
13+
from common.forms import BaseForm
14+
from maxkb.settings import maxkb_logger
15+
from models_provider.base_model_provider import BaseModelCredential, ValidCode
16+
from django.utils.translation import gettext as _
17+
18+
19+
20+
class AliyunBaiLianDefaultSTTModelCredential(BaseForm, BaseModelCredential):
21+
type = forms.Radio(_("Type"), required=True, text_field='label', default_value='qwen', provider='', method='',
22+
value_field='value', option_list=[
23+
{'label': _('Audio file recognition - Tongyi Qwen'),
24+
'value': 'qwen'},
25+
{'label': _('Qwen-Omni'),
26+
'value': 'omni'},
27+
{'label': _('Audio file recognition - Fun-ASR/Paraformer/SenseVoice'),
28+
'value': 'other'}
29+
])
30+
api_url = forms.TextInputField(_('API URL'), required=True, relation_show_field_dict={'type': ['qwen', 'omni']})
31+
api_key = forms.PasswordInputField(_('API Key'), required=True)
32+
33+
def is_valid(self,
34+
model_type: str,
35+
model_name: str,
36+
model_credential: Dict[str, Any],
37+
model_params: Dict[str, Any],
38+
provider,
39+
raise_exception: bool = False
40+
) -> bool:
41+
model_type_list = provider.get_model_type_list()
42+
model_type_list = provider.get_model_type_list()
43+
if not any(mt.get('value') == model_type for mt in model_type_list):
44+
raise AppApiException(
45+
ValidCode.valid_error.value,
46+
_('{model_type} Model type is not supported').format(model_type=model_type)
47+
)
48+
49+
required_keys = ['api_key']
50+
for key in required_keys:
51+
if key not in model_credential:
52+
if raise_exception:
53+
raise AppApiException(
54+
ValidCode.valid_error.value,
55+
_('{key} is required').format(key=key)
56+
)
57+
return False
58+
59+
try:
60+
model = provider.get_model(model_type, model_name, model_credential)
61+
model.check_auth()
62+
except Exception as e:
63+
maxkb_logger.error(f'Exception: {e}', exc_info=True)
64+
if isinstance(e, AppApiException):
65+
raise e
66+
if raise_exception:
67+
raise AppApiException(
68+
ValidCode.valid_error.value,
69+
_('Verification failed, please check whether the parameters are correct: {error}').format(
70+
error=str(e))
71+
)
72+
return False
73+
return True
74+
75+
def encryption_dict(self, model: Dict[str, object]) -> Dict[str, object]:
76+
77+
return {
78+
**model,
79+
'api_key': super().encryption(model.get('api_key', ''))
80+
}
81+
82+
def get_model_params_setting_form(self, model_name):
83+
84+
pass

apps/models_provider/impl/aliyun_bai_lian_model_provider/credential/omni_stt.py renamed to apps/models_provider/impl/aliyun_bai_lian_model_provider/credential/stt/omni_stt.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ def is_valid(self,
4848

4949
try:
5050
model = provider.get_model(model_type, model_name, model_credential)
51+
model.check_auth()
5152
except Exception as e:
5253
maxkb_logger.error(f'Exception: {e}', exc_info=True)
5354
if isinstance(e, AppApiException):

apps/models_provider/impl/aliyun_bai_lian_model_provider/credential/stt.py renamed to apps/models_provider/impl/aliyun_bai_lian_model_provider/credential/stt/stt.py

File renamed without changes.
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#coding=utf-8
2+
"""
3+
@project: MaxKB
4+
@Author:niu
5+
@file: __init__.py.py
6+
@date:2025/12/5 15:39
7+
@desc:
8+
"""
9+
10+
from .asr_stt import AliyunBaiLianAsrSpeechToText
11+
from .default_stt import AliyunBaiLianDefaultSpeechToText
12+
from .stt import AliyunBaiLianSpeechToText
13+
from .omni_stt import AliyunBaiLianOmiSpeechToText

0 commit comments

Comments
 (0)