TTS-1 vs TTS-1 HD
何時該用哪一個 — 綜合評斷,而非基準測試數據表
同樣的 4096 字元上限、同樣支援串流、同樣的音色集合,也同樣都沒有音色控制;tts-1-hd 每百萬字元 $30 對 $15,正好 2 倍,換來更高品質的合成。已公布的規格裡沒有別的差異。做草稿和走量選 tts-1,音訊要交付給使用者時選 tts-1-hd。
定價
費率取自建置時的即時目錄;各模型頁面皆附有目前的費率卡。
它們的相對位置 — 在此計費單位下,所有 7 個 文字轉語音 模型的 每 1M 字元的價格(對數尺度)
能力
規格
| TTS-1 | TTS-1 HD | |
|---|---|---|
| 輸入模態 | 文字 | 文字 |
| 輸出模態 | 音訊 | 音訊 |
| 請求限制 | 4096 characters | 4096 characters |
| 語音 | alloy, ash, coral, echo, fable, onyx, nova, sage and shimmer, a smaller set than the full 13-voice TTS list, and voices are currently optimized for English. | alloy, ash, coral, echo, fable, onyx, nova, sage and shimmer, a smaller set than the full 13-voice TTS list, and voices are currently optimized for English. |
| 語言 | Generally follows the Whisper model’s language support: Afrikaans, Arabic, Armenian, Azerbaijani, Belarusian, Bosnian, Bulgarian, Catalan, Chinese, Croatian, Czech, Danish, Dutch, English, Estonian, Finnish, French, Galician, German, Greek, Hebrew, Hindi, Hungarian, Icelandic, Indonesian, Italian, Japanese, Kannada, Kazakh, Korean, Latvian, Lithuanian, Macedonian, Malay, Marathi, Maori, Nepali, Norwegian, Persian, Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovenian, Spanish, Swahili, Swedish, Tagalog, Tamil, Thai, Turkish, Ukrainian, Urdu, Vietnamese and Welsh, despite voices being optimized for English | Generally follows the Whisper model’s language support: Afrikaans, Arabic, Armenian, Azerbaijani, Belarusian, Bosnian, Bulgarian, Catalan, Chinese, Croatian, Czech, Danish, Dutch, English, Estonian, Finnish, French, Galician, German, Greek, Hebrew, Hindi, Hungarian, Icelandic, Indonesian, Italian, Japanese, Kannada, Kazakh, Korean, Latvian, Lithuanian, Macedonian, Malay, Marathi, Maori, Nepali, Norwegian, Persian, Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovenian, Spanish, Swahili, Swedish, Tagalog, Tamil, Thai, Turkish, Ukrainian, Urdu, Vietnamese and Welsh, despite voices being optimized for English |
| 語音控制 | none | none |
| 限制 | Speech generation endpoint (v1/audio/speech) only, with Chat Completions, Responses, Realtime, Batch and Fine-tuning all listed as not supported input text is capped at 4096 characters output mp3 (default), opus, aac, flac, wav or pcm (raw 24 kHz 16-bit signed little-endian samples) realtime playback via chunked transfer encoding | Speech generation endpoint (v1/audio/speech) only, with Chat Completions, Responses, Realtime, Batch and Fine-tuning all listed as not supported input text is capped at 4096 characters output mp3 (default), opus, aac, flac, wav or pcm (raw 24 kHz 16-bit signed little-endian samples) realtime playback via chunked transfer encoding |
只需一行程式碼即可在兩者間切換
以下每個頁籤中都有這兩個 ID — 醒目提示的這兩行是唯一的修改處。相同的端點,相同的金鑰,相同的請求結構。
from openai import OpenAI
client = OpenAI(
base_url="https://synthorai.io/v1",
api_key="sk-syn-...",
)
resp = client.audio.transcriptions.create(
model="tts-1",
# model="tts-1-hd", # 取消註解此行,並註解上一行
file=open("meeting.mp3", "rb"),
language="en",
)
print(resp.text)import OpenAI from "openai";
import fs from "node:fs";
const client = new OpenAI({
baseURL: "https://synthorai.io/v1",
apiKey: "sk-syn-...",
});
const resp = await client.audio.transcriptions.create({
model: "tts-1",
// model: "tts-1-hd", // 取消註解此行,並註解上一行
file: fs.createReadStream("meeting.mp3"),
});
console.log(resp.text);curl https://synthorai.io/v1/audio/transcriptions \
-H "Authorization: Bearer sk-syn-..." \
-F model="tts-1" \
# -F model="tts-1-hd" \ # 取消註解此行,並註解上一行
-F file=@meeting.mp3package main
import (
"context"
"fmt"
"os"
"github.com/openai/openai-go/v3"
"github.com/openai/openai-go/v3/option"
)
func main() {
client := openai.NewClient(
option.WithBaseURL("https://synthorai.io/v1"),
option.WithAPIKey("sk-syn-..."),
)
f, _ := os.Open("meeting.mp3")
resp, _ := client.Audio.Transcriptions.New(context.TODO(), openai.AudioTranscriptionNewParams{
Model: "tts-1",
// Model: "tts-1-hd", // 取消註解此行,並註解上一行
File: f,
})
fmt.Println(resp.Text)
}import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;
import com.openai.models.audio.transcriptions.*;
import java.nio.file.Paths;
OpenAIClient client = OpenAIOkHttpClient.builder()
.baseUrl("https://synthorai.io/v1")
.apiKey("sk-syn-...")
.build();
Transcription resp = client.audio().transcriptions().create(
TranscriptionCreateParams.builder()
.model("tts-1")
// .model("tts-1-hd") // 取消註解此行,並註解上一行
.file(Paths.get("meeting.mp3"))
.build()).asTranscription();
System.out.println(resp.text());常見問題
TTS-1 和 TTS-1 HD 哪個比較便宜?
TTS-1 在 每 1m 字元 上較便宜($15 對比 $30,相差 2.0×)。其他項目可能呈現相反結果 — 上表提供完整資訊,實際成本取決於您的使用組合。
我可以在不進行兩次整合的情況下,對 TTS-1 和 TTS-1 HD 進行 A/B 測試嗎?
可以。兩者皆透過同一個相容 OpenAI 的端點提供服務,並使用同一把 API 金鑰 — 切換只需更改一行的模型字串,因此您可以將部分流量分別導向兩者並直接比較帳單。
文字轉語音是如何計費的?
依輸入文字的字元數計費,規格表中會顯示每個請求的字元上限。較長的稿件在這兩個模型上都必須分拆成多個請求。