feat: 新增音频格式与采样率配置,完善OpenAI兼容格式映射
1. 新增BYTEDANCE_TTS_FORMAT和BYTEDANCE_TTS_SAMPLE_RATE环境变量配置 2. 实现OpenAI TTS格式到火山API格式的映射转换 3. 自动处理wav格式:内部用pcm请求后封装标准WAV头 4. 动态设置响应Content-Type,适配不同输出格式 5. 更新文档与配置示例,完善日志与错误处理
This commit is contained in:
+29
-5
@@ -50,6 +50,26 @@ func InitTTSConfig() error {
|
||||
}
|
||||
}
|
||||
|
||||
// 音频格式,默认 mp3(文档默认值,流式场景下 wav 会多次返回 header,不推荐)
|
||||
format := os.Getenv("BYTEDANCE_TTS_FORMAT")
|
||||
if format == "" {
|
||||
format = "mp3"
|
||||
}
|
||||
|
||||
// 采样率,默认 24000
|
||||
sampleRate := 24000
|
||||
if srStr := os.Getenv("BYTEDANCE_TTS_SAMPLE_RATE"); srStr != "" {
|
||||
if sr, err := fmt.Sscanf(srStr, "%d", &sampleRate); err != nil || sr != 1 {
|
||||
log.Printf("无效的采样率设置 '%s',使用默认值: 24000", srStr)
|
||||
sampleRate = 24000
|
||||
}
|
||||
validRates := map[int]bool{8000: true, 16000: true, 22050: true, 24000: true, 32000: true, 44100: true, 48000: true}
|
||||
if !validRates[sampleRate] {
|
||||
log.Printf("不支持的采样率 %d,使用默认值: 24000", sampleRate)
|
||||
sampleRate = 24000
|
||||
}
|
||||
}
|
||||
|
||||
TTSConfig = dto.ByteDanceTTSConfig{
|
||||
ApiKey: apiKey,
|
||||
ResourceId: resourceId,
|
||||
@@ -57,6 +77,8 @@ func InitTTSConfig() error {
|
||||
Model: model,
|
||||
URL: url,
|
||||
Timeout: timeout,
|
||||
Format: format,
|
||||
SampleRate: sampleRate,
|
||||
}
|
||||
return nil
|
||||
}
|
||||
@@ -76,11 +98,13 @@ func CheckEnvironmentVariables() map[string]interface{} {
|
||||
}
|
||||
|
||||
optionalVars := map[string]bool{
|
||||
"BYTEDANCE_TTS_TIMEOUT": os.Getenv("BYTEDANCE_TTS_TIMEOUT") != "",
|
||||
"BYTEDANCE_TTS_MODEL": os.Getenv("BYTEDANCE_TTS_MODEL") != "",
|
||||
"OPENAI_TTS_API_KEY": os.Getenv("OPENAI_TTS_API_KEY") != "",
|
||||
"ALLOWED_ORIGINS": os.Getenv("ALLOWED_ORIGINS") != "",
|
||||
"PORT": os.Getenv("PORT") != "",
|
||||
"BYTEDANCE_TTS_TIMEOUT": os.Getenv("BYTEDANCE_TTS_TIMEOUT") != "",
|
||||
"BYTEDANCE_TTS_MODEL": os.Getenv("BYTEDANCE_TTS_MODEL") != "",
|
||||
"BYTEDANCE_TTS_FORMAT": os.Getenv("BYTEDANCE_TTS_FORMAT") != "",
|
||||
"BYTEDANCE_TTS_SAMPLE_RATE": os.Getenv("BYTEDANCE_TTS_SAMPLE_RATE") != "",
|
||||
"OPENAI_TTS_API_KEY": os.Getenv("OPENAI_TTS_API_KEY") != "",
|
||||
"ALLOWED_ORIGINS": os.Getenv("ALLOWED_ORIGINS") != "",
|
||||
"PORT": os.Getenv("PORT") != "",
|
||||
}
|
||||
|
||||
return map[string]interface{}{
|
||||
|
||||
Reference in New Issue
Block a user