音频处理
TTS 文字转语音
将文本转换为自然流畅的语音
POST
/
v1
/
audio
/
speech
curl https://www.qingbo.dev/v1/audio/speech \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "tts-1",
"voice": "nova",
"input": "欢迎使用 清波 API 文字转语音服务。"
}' \
--output output.mp3
from openai import OpenAI
client = OpenAI(
base_url="https://www.qingbo.dev/v1",
api_key="YOUR_API_KEY"
)
response = client.audio.speech.create(
model="tts-1",
voice="nova",
input="欢迎使用 清波 API 文字转语音服务。"
)
response.stream_to_file("output.mp3")
import OpenAI from 'openai';
import fs from 'fs';
const client = new OpenAI({
baseURL: 'https://www.qingbo.dev/v1',
apiKey: 'YOUR_API_KEY'
});
const response = await client.audio.speech.create({
model: 'tts-1',
voice: 'nova',
input: '欢迎使用 清波 API 文字转语音服务。'
});
const buffer = Buffer.from(await response.arrayBuffer());
fs.writeFileSync('output.mp3', buffer);
package main
import (
"bytes"
"encoding/json"
"io"
"net/http"
"os"
)
func main() {
payload := map[string]string{
"model": "tts-1",
"voice": "nova",
"input": "欢迎使用 清波 API 文字转语音服务。",
}
body, _ := json.Marshal(payload)
req, _ := http.NewRequest("POST", "https://www.qingbo.dev/v1/audio/speech", bytes.NewBuffer(body))
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
out, _ := os.Create("output.mp3")
defer out.Close()
io.Copy(out, resp.Body)
}
import java.net.http.*;
import java.net.URI;
import java.nio.file.*;
public class Main {
public static void main(String[] args) throws Exception {
String payload = """
{
"model": "tts-1",
"voice": "nova",
"input": "欢迎使用 清波 API 文字转语音服务。"
}
""";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://www.qingbo.dev/v1/audio/speech"))
.header("Authorization", "Bearer YOUR_API_KEY")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(payload))
.build();
HttpResponse<byte[]> response = client.send(request,
HttpResponse.BodyHandlers.ofByteArray());
Files.write(Path.of("output.mp3"), response.body());
}
}
同步接口 — 请求完成后直接返回音频流。
curl https://www.qingbo.dev/v1/audio/speech \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "tts-1",
"voice": "nova",
"input": "欢迎使用 清波 API 文字转语音服务。"
}' \
--output output.mp3
from openai import OpenAI
client = OpenAI(
base_url="https://www.qingbo.dev/v1",
api_key="YOUR_API_KEY"
)
response = client.audio.speech.create(
model="tts-1",
voice="nova",
input="欢迎使用 清波 API 文字转语音服务。"
)
response.stream_to_file("output.mp3")
import OpenAI from 'openai';
import fs from 'fs';
const client = new OpenAI({
baseURL: 'https://www.qingbo.dev/v1',
apiKey: 'YOUR_API_KEY'
});
const response = await client.audio.speech.create({
model: 'tts-1',
voice: 'nova',
input: '欢迎使用 清波 API 文字转语音服务。'
});
const buffer = Buffer.from(await response.arrayBuffer());
fs.writeFileSync('output.mp3', buffer);
package main
import (
"bytes"
"encoding/json"
"io"
"net/http"
"os"
)
func main() {
payload := map[string]string{
"model": "tts-1",
"voice": "nova",
"input": "欢迎使用 清波 API 文字转语音服务。",
}
body, _ := json.Marshal(payload)
req, _ := http.NewRequest("POST", "https://www.qingbo.dev/v1/audio/speech", bytes.NewBuffer(body))
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
out, _ := os.Create("output.mp3")
defer out.Close()
io.Copy(out, resp.Body)
}
import java.net.http.*;
import java.net.URI;
import java.nio.file.*;
public class Main {
public static void main(String[] args) throws Exception {
String payload = """
{
"model": "tts-1",
"voice": "nova",
"input": "欢迎使用 清波 API 文字转语音服务。"
}
""";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://www.qingbo.dev/v1/audio/speech"))
.header("Authorization", "Bearer YOUR_API_KEY")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(payload))
.build();
HttpResponse<byte[]> response = client.send(request,
HttpResponse.BodyHandlers.ofByteArray());
Files.write(Path.of("output.mp3"), response.body());
}
}
可用模型
| 模型 ID | 说明 |
|---|---|
tts-1 | 标准质量,延迟低 |
tts-1-hd | 高清质量 |
请求参数
模型 ID:
tts-1、tts-1-hd要转换的文本内容
语音类型:
alloy、echo、fable、onyx、nova、shimmer响应
返回音频文件流(MP3 格式),直接保存为文件即可。⌘I
curl https://www.qingbo.dev/v1/audio/speech \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "tts-1",
"voice": "nova",
"input": "欢迎使用 清波 API 文字转语音服务。"
}' \
--output output.mp3
from openai import OpenAI
client = OpenAI(
base_url="https://www.qingbo.dev/v1",
api_key="YOUR_API_KEY"
)
response = client.audio.speech.create(
model="tts-1",
voice="nova",
input="欢迎使用 清波 API 文字转语音服务。"
)
response.stream_to_file("output.mp3")
import OpenAI from 'openai';
import fs from 'fs';
const client = new OpenAI({
baseURL: 'https://www.qingbo.dev/v1',
apiKey: 'YOUR_API_KEY'
});
const response = await client.audio.speech.create({
model: 'tts-1',
voice: 'nova',
input: '欢迎使用 清波 API 文字转语音服务。'
});
const buffer = Buffer.from(await response.arrayBuffer());
fs.writeFileSync('output.mp3', buffer);
package main
import (
"bytes"
"encoding/json"
"io"
"net/http"
"os"
)
func main() {
payload := map[string]string{
"model": "tts-1",
"voice": "nova",
"input": "欢迎使用 清波 API 文字转语音服务。",
}
body, _ := json.Marshal(payload)
req, _ := http.NewRequest("POST", "https://www.qingbo.dev/v1/audio/speech", bytes.NewBuffer(body))
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
out, _ := os.Create("output.mp3")
defer out.Close()
io.Copy(out, resp.Body)
}
import java.net.http.*;
import java.net.URI;
import java.nio.file.*;
public class Main {
public static void main(String[] args) throws Exception {
String payload = """
{
"model": "tts-1",
"voice": "nova",
"input": "欢迎使用 清波 API 文字转语音服务。"
}
""";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://www.qingbo.dev/v1/audio/speech"))
.header("Authorization", "Bearer YOUR_API_KEY")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(payload))
.build();
HttpResponse<byte[]> response = client.send(request,
HttpResponse.BodyHandlers.ofByteArray());
Files.write(Path.of("output.mp3"), response.body());
}
}