From cb5c810392c35b793a8d7747baf216859f1a5c8a Mon Sep 17 00:00:00 2001 From: Xinwei Xiong <3293172751NSS@gmail.com> Date: Wed, 25 Dec 2024 12:29:57 +0700 Subject: [PATCH] feat: add common version mange --- configs/config.yaml | 2 +- internal/stt/assemblyai/assemblyai.go | 32 +++++++++++++-------------- 2 files changed, 16 insertions(+), 18 deletions(-) diff --git a/configs/config.yaml b/configs/config.yaml index e1be200..9f751fd 100644 --- a/configs/config.yaml +++ b/configs/config.yaml @@ -78,7 +78,7 @@ assemblyai: api_key: "" # 你的 AssemblyAI API Key model: "best" # 选用 "best" 或 "nano" language_detection: true - language_confidence_threshold: 0 + language_confidence_threshold: 0.8 default_language_code: "en" language_code: "" # 要禁用标点符号和文本格式,请在转录配置中将Punctuate和FormatText设置为false diff --git a/internal/stt/assemblyai/assemblyai.go b/internal/stt/assemblyai/assemblyai.go index 6f6ffc5..d35b004 100644 --- a/internal/stt/assemblyai/assemblyai.go +++ b/internal/stt/assemblyai/assemblyai.go @@ -45,26 +45,11 @@ func (s *STT) Recognize(audioData []byte, audioURL string) (string, error) { func (s *STT) transcribeFromURL(audioURL string) (string, error) { ctx := context.Background() - // 第一次尝试:使用语言检测 + // 第一次尝试��使用语言检测 params := s.buildParams() transcript, err := s.client.Transcripts.TranscribeFromURL(ctx, audioURL, params) if err != nil { - // 检查是否是语言置信度错误 - if s.isLanguageConfidenceError(err) && s.cfg.AssemblyAI.DefaultLanguageCode != "" { - // 使用默认语言重试 - logger.Infof("语言置信度低于阈值 %.2f,使用默认语言 %s 重试", - s.cfg.AssemblyAI.LanguageConfidenceThreshold, - s.cfg.AssemblyAI.DefaultLanguageCode) - - // 构建新的参数,使用默认语言 - params = s.buildParamsWithDefaultLanguage() - transcript, err = s.client.Transcripts.TranscribeFromURL(ctx, audioURL, params) - if err != nil { - return "", fmt.Errorf("使用默认语言重试失败: %v", err) - } - } else { - return "", fmt.Errorf("转录请求失败: %v", err) - } + return "", fmt.Errorf("转录请求失败: %v", err) } // 使用指数退避策略,轮询转录状态 @@ -82,8 +67,21 @@ func (s *STT) transcribeFromURL(audioURL string) (string, error) { if err != nil { return "", fmt.Errorf("获取转录结果失败: %v", err) } + + // 检查错误状态 if transcript.Status == "error" { if transcript.Error != nil { + // 在这里检查语言置信度错误 + if s.isLanguageConfidenceError(err) && s.cfg.AssemblyAI.DefaultLanguageCode != "" { + // 使用默认语言重试 + logger.Infof("语言置信度低于阈值 %.2f,使用默认语言 %s 重试", + s.cfg.AssemblyAI.LanguageConfidenceThreshold, + s.cfg.AssemblyAI.DefaultLanguageCode) + + // 构建新的参数,使用默认语言 + params = s.buildParamsWithDefaultLanguage() + return s.transcribeFromURL(audioURL) // 递归调用,使用新参数重试 + } return "", fmt.Errorf("转录出错: %s", *transcript.Error) } return "", fmt.Errorf("转录出错, 未返回具体错误信息")