Files
ttstd-infinite-canvas/web/test/audio-generation.test.ts
ddcat666 080dbcbabe fix(web): 音频与角色素材 - 修正格式检查未通过的代码风格
角色库、音频参数和音频测试在上次提交后不再符合 Prettier,质量检查因此失败。只调整格式,不改变交互。
2026-10-01 13:18:06 +08:00

42 lines
2.1 KiB
TypeScript

import { describe, expect, test } from "bun:test";
import { doubaoAudioVoiceOptions, isDoubaoAudioConfig, normalizeAudioVoiceForConfig, normalizeAudioVoiceValue } from "../src/lib/audio-generation";
const config = (protocol: string) =>
({
provider: "custom",
model: "models/index-tts",
audioModel: "models/index-tts",
apiKey: "",
baseUrl: "",
channels: [{ models: ["index-tts"], modelCosts: [], interfaceType: protocol, baseUrl: "", apiKey: "" }],
}) as any;
describe("audio voice protocol handling", () => {
test("keeps custom voice identifiers for non-OpenAI channels", () => {
expect(normalizeAudioVoiceValue("voice_001")).toBe("voice_001");
});
test("uses provider-specific Doubao defaults instead of OpenAI alloy", () => {
const doubao = { ...config("doubao-streaming-tts"), model: "seed-audio-1.0", audioModel: "seed-audio-1.0" } as any;
expect(isDoubaoAudioConfig(doubao)).toBe(true);
expect(normalizeAudioVoiceForConfig(doubao, "alloy")).toBe("");
});
test("lists every official Doubao 1.0 voice in Chinese", () => {
const values = doubaoAudioVoiceOptions.map((item) => item.value);
expect(doubaoAudioVoiceOptions).toHaveLength(103);
expect(new Set(values).size).toBe(values.length);
expect(values).toContain("zh_female_shuangkuaisisi_moon_bigtts");
expect(values).toContain("zh_female_yueyunv_mars_bigtts");
expect(values).toContain("zh_male_qingcang_mars_bigtts");
expect(values).not.toContain("zh_female_vv_uranus_bigtts");
expect(values).not.toContain("zh_female_xiaohe_uranus_bigtts");
expect(doubaoAudioVoiceOptions.every((item) => /[\u4e00-\u9fff]/.test(item.label) && /[\u4e00-\u9fff]/.test(item.scene))).toBe(true);
});
test("preserves manually entered official Doubao speaker IDs", () => {
const doubao = { ...config("doubao-streaming-tts"), model: "seed-audio-1.0", audioModel: "seed-audio-1.0" } as any;
expect(normalizeAudioVoiceForConfig(doubao, "zh_male_custom_official_speaker")).toBe("zh_male_custom_official_speaker");
});
});