跳转到主要内容
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高清质量

请求参数

model
string
必填
模型 ID:tts-1tts-1-hd
input
string
必填
要转换的文本内容
voice
string
默认值:"alloy"
语音类型:alloyechofableonyxnovashimmer

响应

返回音频文件流(MP3 格式),直接保存为文件即可。