语音转文字
适用于:Chatflow、Workflow、Agent、聊天助手、旧版 Agent、文本生成应用。
使用工作空间的默认语音转文字模型,将上传的音频文件转写为文字。
1 min read
post/audio-to-text
Request example
curl --request POST \
--url https://api.dify.ai/v1/audio-to-text \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: multipart/form-data' \
--form 'file=<file>' \
--form 'user=<string>'import requests
url = "https://api.dify.ai/v1/audio-to-text"
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "multipart/form-data",
}
files = {
"file": (None, "<file>"),
"user": (None, "<string>"),
}
response = requests.request("POST", url, headers=headers, files=files)
print(response.text)const form = new FormData();
form.append('file', '<file>');
form.append('user', '<string>');
const response = await fetch('https://api.dify.ai/v1/audio-to-text', {
method: 'POST',
headers: {
'Authorization': 'Bearer <token>',
'Content-Type': 'multipart/form-data'
},
body: form
});
const data = await response.json();
console.log(data);<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://api.dify.ai/v1/audio-to-text',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => ['file' => '<file>', 'user' => '<string>'],
CURLOPT_HTTPHEADER => [
'Authorization: Bearer <token>',
'Content-Type: multipart/form-data',
],
]);
$response = curl_exec($curl);
curl_close($curl);
echo $response;package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
url := "https://api.dify.ai/v1/audio-to-text"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"\r\n\r\n<file>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"user\"\r\n\r\n<string>\r\n-----011000010111000001101001--\r\n")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "multipart/form-data; boundary=---011000010111000001101001")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.dify.ai/v1/audio-to-text"))
.header("Authorization", "Bearer <token>")
.header("Content-Type", "multipart/form-data; boundary=---011000010111000001101001")
.method("POST", HttpRequest.BodyPublishers.ofString("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"\r\n\r\n<file>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"user\"\r\n\r\n<string>\r\n-----011000010111000001101001--\r\n"))
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());require 'uri'
require 'net/http'
url = URI('https://api.dify.ai/v1/audio-to-text')
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = url.scheme == 'https'
request = Net::HTTP::Post.new(url)
request['Authorization'] = 'Bearer <token>'
request['Content-Type'] = 'multipart/form-data'
request.set_form([['file', '<file>'], ['user', '<string>']], "multipart/form-data")
response = http.request(request)
puts response.read_bodyResponse
{
"text": "Hello, I would like to know more about the iPhone 13 Pro Max."
}{
"code": "completion_request_error",
"message": "[OpenAI] Incorrect model credentials provided, please check and try again.",
"status": 400
}{
"code": "invalid_param",
"message": "Model whisper-1 is disabled.",
"status": 400
}{
"code": "model_currently_not_support",
"message": "Dify Hosted OpenAI trial currently not support the GPT-4 model.",
"status": 400
}{
"code": "no_audio_uploaded",
"message": "Please upload your audio.",
"status": 400
}{
"code": "provider_not_initialize",
"message": "Default model not found for speech2text",
"status": 400
}{
"code": "speech_to_text_disabled",
"message": "Speech to text is disabled.",
"status": 400
}{
"code": "audio_too_large",
"message": "Audio size larger than 30 mb",
"status": 413
}{
"code": "unsupported_audio_type",
"message": "Audio type not allowed.",
"status": 415
}{
"code": "internal_server_error",
"message": "The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.",
"status": 500
}post/audio-to-text
Authorization
Body
multipart/form-dataResponses
application/json
语音转文字成功。
语音识别输出的文字。