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 65ec8972..58904ef9 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 @@ -114,10 +114,17 @@ databaseChangeLog: - sqlFile: encoding: utf8 path: classpath:db/changelog/202505091409.sql + - changeSet: + id: 202505091552 + author: whosmyqueen + changes: + - sqlFile: + encoding: utf8 + path: classpath:db/changelog/202505091552.sql - changeSet: id: 202505111914 author: hrz changes: - sqlFile: encoding: utf8 - path: classpath:db/changelog/202505111914.sql \ No newline at end of file + path: classpath:db/changelog/202505111914.sql 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,