From ba86b34a8c5fb2e6897b7f79f0ea671f3d05aa80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=84=E5=87=A4=E7=A7=91=E6=8A=80?= Date: Wed, 7 May 2025 11:34:29 +0800 Subject: [PATCH] =?UTF-8?q?pcm=E6=A8=A1=E5=BC=8F=EF=BC=8C=E5=90=8C?= =?UTF-8?q?=E6=AD=A5=E5=85=B6=E4=BB=96asr?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main/xiaozhi-server/core/providers/asr/aliyun.py | 5 ++++- main/xiaozhi-server/core/providers/asr/baidu.py | 5 ++++- main/xiaozhi-server/core/providers/asr/doubao.py | 5 ++++- main/xiaozhi-server/core/providers/asr/fun_server.py | 5 ++++- main/xiaozhi-server/core/providers/asr/sherpa_onnx_local.py | 5 ++++- main/xiaozhi-server/core/providers/asr/tencent.py | 5 ++++- 6 files changed, 24 insertions(+), 6 deletions(-) diff --git a/main/xiaozhi-server/core/providers/asr/aliyun.py b/main/xiaozhi-server/core/providers/asr/aliyun.py index 6ef9cc3d..be5541ee 100644 --- a/main/xiaozhi-server/core/providers/asr/aliyun.py +++ b/main/xiaozhi-server/core/providers/asr/aliyun.py @@ -232,7 +232,10 @@ class ASRProvider(ASRProviderBase): file_path = None try: # 解码Opus为PCM - pcm_data = self.decode_opus(opus_data, session_id) + if self.audio_format == "pcm": + pcm_data = opus_data + else: + pcm_data = self.decode_opus(opus_data, session_id) combined_pcm_data = b''.join(pcm_data) # 判断是否保存为WAV文件 diff --git a/main/xiaozhi-server/core/providers/asr/baidu.py b/main/xiaozhi-server/core/providers/asr/baidu.py index 628c38be..58b26375 100644 --- a/main/xiaozhi-server/core/providers/asr/baidu.py +++ b/main/xiaozhi-server/core/providers/asr/baidu.py @@ -65,7 +65,10 @@ class ASRProvider(ASRProviderBase): return None, file_path # 将Opus音频数据解码为PCM - pcm_data = self.decode_opus(opus_data) + if self.audio_format == "pcm": + pcm_data = opus_data + else: + pcm_data = self.decode_opus(opus_data) combined_pcm_data = b"".join(pcm_data) # 判断是否保存为WAV文件 diff --git a/main/xiaozhi-server/core/providers/asr/doubao.py b/main/xiaozhi-server/core/providers/asr/doubao.py index f9df3b3a..0ca089c9 100644 --- a/main/xiaozhi-server/core/providers/asr/doubao.py +++ b/main/xiaozhi-server/core/providers/asr/doubao.py @@ -250,7 +250,10 @@ class ASRProvider(ASRProviderBase): file_path = None try: # 合并所有opus数据包 - pcm_data = self.decode_opus(opus_data, session_id) + if self.audio_format == "pcm": + pcm_data = opus_data + else: + pcm_data = self.decode_opus(opus_data, session_id) combined_pcm_data = b"".join(pcm_data) # 判断是否保存为WAV文件 diff --git a/main/xiaozhi-server/core/providers/asr/fun_server.py b/main/xiaozhi-server/core/providers/asr/fun_server.py index 2c11b8b3..f20d5be7 100644 --- a/main/xiaozhi-server/core/providers/asr/fun_server.py +++ b/main/xiaozhi-server/core/providers/asr/fun_server.py @@ -106,7 +106,10 @@ class ASRProvider(ASRProviderBase): :return: Tuple containing recognized text and optional timestamp. ''' file_path = None - pcm_data = self.decode_opus(opus_data) + if self.audio_format == "pcm": + pcm_data = opus_data + else: + pcm_data = self.decode_opus(opus_data) combined_pcm_data = b"".join(pcm_data) # 判断是否保存为WAV文件 diff --git a/main/xiaozhi-server/core/providers/asr/sherpa_onnx_local.py b/main/xiaozhi-server/core/providers/asr/sherpa_onnx_local.py index 7e3fb6dd..45e22336 100644 --- a/main/xiaozhi-server/core/providers/asr/sherpa_onnx_local.py +++ b/main/xiaozhi-server/core/providers/asr/sherpa_onnx_local.py @@ -129,7 +129,10 @@ class ASRProvider(ASRProviderBase): try: # 保存音频文件 start_time = time.time() - pcm_data = self.decode_opus(opus_data, session_id) + if self.audio_format == "pcm": + pcm_data = opus_data + else: + pcm_data = self.decode_opus(opus_data, session_id) file_path = self.save_audio_to_file(pcm_data, session_id) logger.bind(tag=TAG).debug( f"音频文件保存耗时: {time.time() - start_time:.3f}s | 路径: {file_path}" diff --git a/main/xiaozhi-server/core/providers/asr/tencent.py b/main/xiaozhi-server/core/providers/asr/tencent.py index bc7c5928..2aa7bec5 100644 --- a/main/xiaozhi-server/core/providers/asr/tencent.py +++ b/main/xiaozhi-server/core/providers/asr/tencent.py @@ -59,7 +59,10 @@ class ASRProvider(ASRProviderBase): return None, file_path # 将Opus音频数据解码为PCM - pcm_data = self.decode_opus(opus_data) + if self.audio_format == "pcm": + pcm_data = opus_data + else: + pcm_data = self.decode_opus(opus_data) combined_pcm_data = b"".join(pcm_data) # 判断是否保存为WAV文件