本指南以文本转语音能力为例,帮助您在 5 分钟内完成首个 API 调用,并直接得到可播放的 mp3 文件。
选择您熟悉的编程语言,复制以下示例即可直接运行。
以下示例统一输出
output.mp3。其中model需填写模型名称,voice_setting.voice_id需填写可调用音色 ID。
curl -X POST https://api.senseaudio.cn/v1/t2a_v2 \
-H "Authorization: Bearer $SENSEAUDIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "senseaudio-tts-1.5-260319",
"text": "你好,这是来自 SenseAudio 的第一条语音。",
"voice_setting": {
"voice_id": "male_0004_a"
},
"audio_setting": {
"format": "mp3",
"sample_rate": 32000
}
}' -o response.json
jq -r '.data.audio' response.json | xxd -r -p > output.mp3import requests
# 1. 配置 API Key 和 URL
SENSEAUDIO_API_KEY = "SENSEAUDIO_API_KEY"
url = "https://api.senseaudio.cn/v1/t2a_v2"
# 2. 准备请求数据
payload = {
"model": "senseaudio-tts-1.5-260319",
"text": "你好,这是来自 SenseAudio 的第一条语音。",
"voice_setting": {
"voice_id": "male_0004_a",
"speed": 1.0,
"vol": 1.0,
"pitch": 0
},
"audio_setting": {
"format": "mp3",
"sample_rate": 32000
}
}
headers = {
"Authorization": f"Bearer {SENSEAUDIO_API_KEY}",
"Content-Type": "application/json"
}
# 3. 发送请求
response = requests.post(url, json=payload, headers=headers)
result = response.json()
if result.get("data") and result["data"].get("audio"):
audio_bytes = bytes.fromhex(result["data"]["audio"])
with open("output.mp3", "wb") as f:
f.write(audio_bytes)
print("语音已保存到 output.mp3")
else:
print(f"请求失败: {result.get('base_resp', {}).get('status_msg', 'unknown error')}")const axios = require('axios');
const fs = require('fs');
const SENSEAUDIO_API_KEY = "SENSEAUDIO_API_KEY";
const url = 'https://api.senseaudio.cn/v1/t2a_v2';
const payload = {
model: 'senseaudio-tts-1.5-260319',
text: '你好,这是来自 SenseAudio 的第一条语音。',
voice_setting: {
voice_id: 'male_0004_a',
speed: 1.0,
vol: 1.0,
pitch: 0
},
audio_setting: {
format: 'mp3',
sample_rate: 32000
}
};
axios.post(url, payload, {
headers: {
'Authorization': `Bearer ${SENSEAUDIO_API_KEY}`,
'Content-Type': 'application/json'
}
})
.then(response => {
const result = response.data;
if (result.data?.audio) {
const audioBuffer = Buffer.from(result.data.audio, 'hex');
fs.writeFileSync('output.mp3', audioBuffer);
console.log('语音已保存到 output.mp3');
} else {
console.error('请求失败:', result.base_resp?.status_msg || 'unknown error');
}
})
.catch(error => {
console.error('请求失败:', error.message);
});package main
import (
"bytes"
"encoding/hex"
"encoding/json"
"fmt"
"io"
"net/http"
"os"
)
type TTSRequest struct {
Model string `json:"model"`
Text string `json:"text"`
VoiceSetting VoiceSetting `json:"voice_setting"`
AudioSetting AudioSetting `json:"audio_setting"`
}
type VoiceSetting struct {
VoiceID string `json:"voice_id"`
Speed float64 `json:"speed"`
Vol float64 `json:"vol"`
Pitch int `json:"pitch"`
}
type AudioSetting struct {
Format string `json:"format"`
SampleRate int `json:"sample_rate"`
}
func main() {
SENSEAUDIO_API_KEY := "SENSEAUDIO_API_KEY"
url := "https://api.senseaudio.cn/v1/t2a_v2"
payload := TTSRequest{
Model: "senseaudio-tts-1.5-260319",
Text: "你好,这是来自 SenseAudio 的第一条语音。",
VoiceSetting: VoiceSetting{
VoiceID: "male_0004_a",
Speed: 1.0,
Vol: 1.0,
Pitch: 0,
},
AudioSetting: AudioSetting{
Format: "mp3",
SampleRate: 32000,
},
}
jsonData, _ := json.Marshal(payload)
req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
req.Header.Set("Authorization", "Bearer "+SENSEAUDIO_API_KEY)
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
fmt.Println("请求失败:", err)
return
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
var result map[string]any
json.Unmarshal(body, &result)
data, ok := result["data"].(map[string]any)
if !ok || data["audio"] == nil {
fmt.Println("请求失败")
return
}
audioHex, _ := data["audio"].(string)
audioBytes, err := hex.DecodeString(audioHex)
if err != nil {
fmt.Println("音频解码失败:", err)
return
}
os.WriteFile("output.mp3", audioBytes, 0644)
fmt.Println("语音已保存到 output.mp3")
}import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import org.json.JSONObject;
public class SenseAudioQuickStart {
public static void main(String[] args) {
try {
String SENSEAUDIO_API_KEY = "SENSEAUDIO_API_KEY";
String apiUrl = "https://api.senseaudio.cn/v1/t2a_v2";
// 构建请求体
JSONObject voiceSetting = new JSONObject();
voiceSetting.put("voice_id", "male_0004_a");
voiceSetting.put("speed", 1.0);
voiceSetting.put("vol", 1.0);
voiceSetting.put("pitch", 0);
JSONObject audioSetting = new JSONObject();
audioSetting.put("format", "mp3");
audioSetting.put("sample_rate", 32000);
JSONObject payload = new JSONObject();
payload.put("model", "senseaudio-tts-1.5-260319");
payload.put("text", "你好,这是来自 SenseAudio 的第一条语音。");
payload.put("voice_setting", voiceSetting);
payload.put("audio_setting", audioSetting);
// 发送请求
URL url = new URL(apiUrl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("Authorization", "Bearer " + SENSEAUDIO_API_KEY);
conn.setRequestProperty("Content-Type", "application/json");
conn.setDoOutput(true);
try (OutputStream os = conn.getOutputStream()) {
byte[] input = payload.toString().getBytes("utf-8");
os.write(input, 0, input.length);
}
// 读取响应
try (BufferedReader br = new BufferedReader(
new InputStreamReader(conn.getInputStream(), "utf-8"))) {
StringBuilder response = new StringBuilder();
String responseLine;
while ((responseLine = br.readLine()) != null) {
response.append(responseLine.trim());
}
JSONObject result = new JSONObject(response.toString());
JSONObject data = result.optJSONObject("data");
if (data != null && data.has("audio")) {
byte[] audioBytes = hexStringToByteArray(data.getString("audio"));
try (FileOutputStream fos = new FileOutputStream("output.mp3")) {
fos.write(audioBytes);
}
System.out.println("语音已保存到 output.mp3");
} else {
JSONObject baseResp = result.optJSONObject("base_resp");
System.out.println("请求失败: " +
(baseResp != null ? baseResp.optString("status_msg", "unknown error") : "unknown error"));
}
}
} catch (Exception e) {
System.out.println("请求失败: " + e.getMessage());
}
}
private static byte[] hexStringToByteArray(String hex) {
int len = hex.length();
byte[] data = new byte[len / 2];
for (int i = 0; i < len; i += 2) {
data[i / 2] = (byte) ((Character.digit(hex.charAt(i), 16) << 4)
+ Character.digit(hex.charAt(i + 1), 16));
}
return data;
}
}model:填写模型名称,例如 senseaudio-tts-1.5-260319,可在 模型列表 中查询。voice_setting.voice_id:填写可调用音色 ID,可在 API 音色服务说明 中获取。output.mp3:示例中的输出文件名,可按业务需要自行修改。