From 7e712c5003f66b91ae9055e058f2c831fe3518a8 Mon Sep 17 00:00:00 2001 From: whosmyqueen Date: Fri, 9 May 2025 16:01:09 +0800 Subject: [PATCH 1/2] =?UTF-8?q?build(db):=20=E6=9B=B4=E6=96=B0=E6=A8=A1?= =?UTF-8?q?=E5=9E=8B=E4=BE=9B=E5=BA=94=E5=99=A8=E5=92=8C=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 更新 ai_model_provider表中的字段配置 - 更新 ai_model_config 表中的配置 JSON- 添加新的数据库变更脚本202505091552.sql - 在 db.changelog-master.yaml 中引用新脚本 --- .../src/main/resources/db/changelog/202505091552.sql | 5 +++++ .../main/resources/db/changelog/db.changelog-master.yaml | 9 ++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 main/manager-api/src/main/resources/db/changelog/202505091552.sql diff --git a/main/manager-api/src/main/resources/db/changelog/202505091552.sql b/main/manager-api/src/main/resources/db/changelog/202505091552.sql new file mode 100644 index 00000000..7d6a40b7 --- /dev/null +++ b/main/manager-api/src/main/resources/db/changelog/202505091552.sql @@ -0,0 +1,5 @@ +-- 更新模型供应器表 +UPDATE `ai_model_provider` SET fields = '[{"key": "host", "type": "string", "label": "服务地址"}, {"key": "port", "type": "number", "label": "端口号"}, {"key": "api_key", "type": "string", "label": "API密钥"}]' WHERE id = 'SYSTEM_ASR_FunASRServer'; + +-- 更新模型配置表 +UPDATE `ai_model_config` SET config_json = '{"host": "127.0.0.1", "port": 10096, "type": "fun_server", "api_key": "none"}' WHERE id = 'ASR_FunASRServer'; \ No newline at end of file diff --git a/main/manager-api/src/main/resources/db/changelog/db.changelog-master.yaml b/main/manager-api/src/main/resources/db/changelog/db.changelog-master.yaml index 53f4609d..6b969776 100755 --- a/main/manager-api/src/main/resources/db/changelog/db.changelog-master.yaml +++ b/main/manager-api/src/main/resources/db/changelog/db.changelog-master.yaml @@ -113,4 +113,11 @@ databaseChangeLog: changes: - sqlFile: encoding: utf8 - path: classpath:db/changelog/202505091409.sql \ No newline at end of file + path: classpath:db/changelog/202505091409.sql + - changeSet: + id: 202505091552 + author: whosmyqueen + changes: + - sqlFile: + encoding: utf8 + path: classpath:db/changelog/202505091552.sql \ No newline at end of file From 164dada46a6aac5fff32328c30b882ea0c035bad Mon Sep 17 00:00:00 2001 From: whosmyqueen Date: Mon, 12 May 2025 14:38:58 +0800 Subject: [PATCH 2/2] =?UTF-8?q?feat(core):=20=E4=B8=BA=20FunASR=20?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E6=B7=BB=E5=8A=A0=20API=20=E5=AF=86=E9=92=A5?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E5=B9=B6=E4=BC=98=E5=8C=96=E7=BB=93=E6=9E=9C?= =?UTF-8?q?=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 FunASRWebSocket 类中添加 API密钥配置 - 在 WebSocket连接时添加认证头信息- 使用正则表达式处理返回结果,提取有用信息 --- main/xiaozhi-server/core/providers/asr/fun_server.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/main/xiaozhi-server/core/providers/asr/fun_server.py b/main/xiaozhi-server/core/providers/asr/fun_server.py index 53eb4e7f..a446c6ac 100644 --- a/main/xiaozhi-server/core/providers/asr/fun_server.py +++ b/main/xiaozhi-server/core/providers/asr/fun_server.py @@ -9,6 +9,7 @@ import wave import websockets from config.logger import setup_logging import asyncio +import re TAG = __name__ logger = setup_logging() @@ -24,6 +25,7 @@ class ASRProvider(ASRProviderBase): super().__init__() self.host = config.get("host", "localhost") self.port = config.get("port", 10095) + self.api_key = config.get('api_key', 'none') self.is_ssl = config.get("is_ssl", True) self.output_dir = config.get("output_dir") self.delete_audio_file = delete_audio_file @@ -130,9 +132,9 @@ class ASRProvider(ASRProviderBase): pass else: file_path = self.save_audio_to_file(pcm_data, session_id) - + auth_header = {'Authorization': 'Bearer; {}'.format(self.api_key)} async with websockets.connect( - self.uri, subprotocols=["binary"], ping_interval=None, ssl=self.ssl_context + self.uri, additional_headers=auth_header, subprotocols=["binary"], ping_interval=None, ssl=self.ssl_context ) as ws: try: # Use asyncio to handle WebSocket communication @@ -157,6 +159,9 @@ class ASRProvider(ASRProviderBase): # Get the result from the receive task result = receive_task.result() + match = re.match(r'<\|(.*?)\|><\|(.*?)\|><\|(.*?)\|>(.*)', result) + if match: + result = match.group(4).strip() return ( result, file_path,