This commit is contained in:
superlishunqin 2025-09-22 06:37:33 +08:00
parent cfacbe10bb
commit d227e3d15c

View File

@ -139,56 +139,52 @@ class CosyVoiceService:
logger.info(f"开始语音克隆: 文本='{text[:20]}...', 参考音频={reference_audio_path}") logger.info(f"开始语音克隆: 文本='{text[:20]}...', 参考音频={reference_audio_path}")
# 构建请求数据 # 构建请求数据
request_data = { request_data = {
"text": text, "text": text,
"reference_audio": reference_audio_path, "reference_audio": reference_audio_path,
"reference_text": reference_text, "reference_text": reference_text,
"seed": seed "seed": seed
} }
logger.info(f"=== 发送给CosyVoice API的数据 ===")
logger.info(f"API URL: {self.api_url}/generate/clone")
logger.info(f"Request Data: {request_data}")
# 发送克隆请求
response = requests.post(
f"{self.api_url}/generate/clone",
json=request_data,
timeout=60 # 克隆需要更长时间
)
logger.info(f"=== CosyVoice API响应 ===")
logger.info(f"Status Code: {response.status_code}")
logger.info(f"Response Headers: {dict(response.headers)}")
if response.status_code != 200:
logger.error(f"Response Text: {response.text}")
if response.status_code == 200: logger.info(f"=== 发送给CosyVoice API的数据 ===")
result = response.json() logger.info(f"API URL: {self.api_url}/generate/clone")
if result.get('success'): logger.info(f"Request Data: {request_data}")
# 直接从响应中获取音频数据
audio_data = result.get('audio_data') # 发送克隆请求
if audio_data: response = requests.post(
local_path = self._save_audio_data(audio_data, 'clone') f"{self.api_url}/generate/clone",
if local_path: json=request_data,
logger.info(f"语音克隆成功: {local_path}") timeout=60 # 克隆需要更长时间
return local_path, local_path )
else:
return None, None logger.info(f"=== CosyVoice API响应 ===")
logger.info(f"Status Code: {response.status_code}")
logger.info(f"Response Headers: {dict(response.headers)}")
if response.status_code != 200:
logger.error(f"Response Text: {response.text}")
return None, None
result = response.json()
if result.get('success'):
# 直接从响应中获取音频数据
audio_data = result.get('audio_data')
if audio_data:
local_path = self._save_audio_data(audio_data, 'clone')
if local_path:
logger.info(f"语音克隆成功: {local_path}")
return local_path, local_path
else: else:
logger.error("响应中没有音频数据")
return None, None return None, None
else: else:
logger.error(f"语音克隆失败: {result.get('message')}") logger.error("响应中没有音频数据")
return None, None return None, None
else: else:
logger.error(f"API请求失败: HTTP {response.status_code}") logger.error(f"语音克隆失败: {result.get('message')}")
return None, None return None, None
except Exception as e: except Exception as e:
logger.error(f"语音克隆失败: {str(e)}") logger.error(f"语音克隆失败: {str(e)}")
return None, None return None, None
def generate_speech_with_natural_control( def generate_speech_with_natural_control(
self, self,
text: str, text: str,