音频转写(Audio Transcriptions)
音频接口的具体能力取决于已配置的模型和渠道。本页介绍 OpenAI 音频转写接口;同一分类下还提供文本转语音和音频翻译。上传文件时使用 multipart/form-data。
语音转文字
POST /v1/audio/transcriptions
Authorization: Bearer sk-your-api-key
Content-Type: multipart/form-data
调用示例
- cURL
- JavaScript
- Python
- Go
- Java
curl -X POST "https://www.walmind.cn/v1/audio/transcriptions" \
-H "Authorization: Bearer $API_KEY" \
-F "file=@audio.mp3" \
-F "model=whisper-1"
import fs from 'node:fs';
const form = new FormData();
form.append('file', new Blob([fs.readFileSync('audio.mp3')]), 'audio.mp3');
form.append('model', 'whisper-1');
const response = await fetch('https://www.walmind.cn/v1/audio/transcriptions', {
method: 'POST',
headers: {Authorization: `Bearer ${process.env.API_KEY}`},
body: form,
});
console.log(await response.json());
import os
import requests
with open("audio.mp3", "rb") as audio_file:
response = requests.post(
"https://www.walmind.cn/v1/audio/transcriptions",
headers={"Authorization": f"Bearer {os.environ['API_KEY']}"},
files={"file": ("audio.mp3", audio_file, "audio/mpeg")},
data={"model": "whisper-1"},
)
response.raise_for_status()
print(response.json())
package main
import (
"bytes"
"fmt"
"io"
"mime/multipart"
"net/http"
"os"
)
func main() {
file, _ := os.Open("audio.mp3")
defer file.Close()
var body bytes.Buffer
writer := multipart.NewWriter(&body)
part, _ := writer.CreateFormFile("file", "audio.mp3")
io.Copy(part, file)
writer.WriteField("model", "whisper-1")
writer.Close()
req, _ := http.NewRequest("POST", "https://www.walmind.cn/v1/audio/transcriptions", &body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("API_KEY"))
req.Header.Set("Content-Type", writer.FormDataContentType())
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
result, _ := io.ReadAll(resp.Body)
fmt.Println(string(result))
}
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.file.Files;
import java.nio.file.Path;
import java.io.ByteArrayOutputStream;
import java.nio.charset.StandardCharsets;
public class TranscribeAudio {
public static void main(String[] args) throws Exception {
String boundary = "----WalmindBoundary";
byte[] audio = Files.readAllBytes(Path.of("audio.mp3"));
ByteArrayOutputStream body = new ByteArrayOutputStream();
body.write(("--" + boundary + "\r\n").getBytes(StandardCharsets.UTF_8));
body.write("Content-Disposition: form-data; name=\"model\"\r\n\r\n".getBytes(StandardCharsets.UTF_8));
body.write("whisper-1\r\n".getBytes(StandardCharsets.UTF_8));
body.write(("--" + boundary + "\r\n").getBytes(StandardCharsets.UTF_8));
body.write("Content-Disposition: form-data; name=\"file\"; filename=\"audio.mp3\"\r\n".getBytes(StandardCharsets.UTF_8));
body.write("Content-Type: audio/mpeg\r\n\r\n".getBytes(StandardCharsets.UTF_8));
body.write(audio);
body.write(("\r\n--" + boundary + "--\r\n").getBytes(StandardCharsets.UTF_8));
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://www.walmind.cn/v1/audio/transcriptions"))
.header("Authorization", "Bearer " + System.getenv("API_KEY"))
.header("Content-Type", "multipart/form-data; boundary=" + boundary)
.POST(HttpRequest.BodyPublishers.ofByteArray(body.toByteArray()))
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
响应示例:
{"text": "识别出的文字内容"}