//go:build emotiontts_live package tts import ( "context" "os" "testing" "time" ) // 本文件是**对着真的 emotionTTS 服务**的端到端验证,默认不进 `go test ./...` // (与 `dashscope_live` 同一口径:不得让常规测试去碰外部服务)。 // // 显式运行(服务默认在 127.0.0.1:9880,可用 EMOTIONTTS_BASE_URL 覆盖): // // go test -tags emotiontts_live -run TestLiveSpeech -v ./internal/runtime/voice/tts/ func TestLiveSpeech(t *testing.T) { baseURL := os.Getenv("EMOTIONTTS_BASE_URL") client := New(Config{Enabled: true, BaseURL: baseURL, Timeout: 120 * time.Second}) start := time.Now() audio, err := client.Speech(context.Background(), chineseSpeech) if err != nil { t.Fatalf("对真服务合成失败: %v", err) } elapsed := time.Since(start) if audio.Format != "wav" { t.Errorf("format = %q, want wav(产物恒为 WAV)", audio.Format) } if len(audio.Data) == 0 { t.Fatal("拿到的音频为空") } if string(audio.Data[:4]) != "RIFF" || string(audio.Data[8:12]) != "WAVE" { t.Fatalf("不是 RIFF/WAVE: %q", string(audio.Data[:12])) } // 证据:真实字节数与耗时(塔要求的"实际字节")。 t.Logf("evidence: base=%s character=%s bytes=%d format=%s elapsed=%s", client.Config().BaseURL, client.Character(), len(audio.Data), audio.Format, elapsed) }