音频分类¶
POST /api/v5/audio/classification
该接口用于对上传的音频文件进行情感分类识别,返回音频的向量表示、情感三维度(唤醒度、支配度、效价)分数以及格式化后的分类结果列表。
访问令牌支持说明¶
- AtomGit 用户访问令牌(AtomGit user access tokens)
是否允许匿名访问¶
此接口允许匿名访问
请求参数¶
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
model |
query | string | 是 | 模型名称,默认为 audeering/wav2vec2-large-robust-12-ft-emotion-msp-dim |
请求体为 multipart/form-data 表单,字段见下:
Request Body:
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"file": {
"description": "音频文件(支持 mp3、wav、m4a、flac、webm 格式),必填",
"type": "string",
"format": "binary"
}
},
"required": ["file"]
}
注意:
model虽为必填,但未传时可回落到默认模型audeering/wav2vec2-large-robust-12-ft-emotion-msp-dim。
响应参数¶
| 字段 | 类型 | 必返 | 可为空 | 说明 |
|---|---|---|---|---|
vector |
number | 是 | 是 | 音频文件的向量表示 |
emotion_class |
object | 是 | 是 | 情感三维度(唤醒度/支配度/效价)分数 |
emotionItems |
array | 是 | 是 | 情感分类结果列表(格式化后) |
emotion_class 对象
| 字段 | 类型 | 必返 | 可为空 | 说明 |
|---|---|---|---|---|
emotion_class.arousal |
number | 是 | 是 | 唤醒度分数(情感激活程度:如兴奋/平静) |
emotion_class.dominance |
number | 是 | 是 | 支配度分数(情感控制感:如支配/顺从) |
emotion_class.valence |
number | 是 | 是 | 效价分数(情感正负向:如愉悦/不悦) |
emotionItems 数组元素
| 字段 | 类型 | 必返 | 可为空 | 说明 |
|---|---|---|---|---|
emotionItems.label |
string | 是 | 是 | 分类名称(中文),如 激动程度 |
emotionItems.labelEn |
string | 是 | 是 | 分类名称(英文),如 Arousal |
emotionItems.value |
string | 是 | 是 | 数值,如 0.6820112466812134 |
emotionItems.valueDesc |
string | 是 | 是 | 数值描述(中文),如 偏激动 |
emotionItems.valueDescEn |
string | 是 | 是 | 数值描述(英文),如 slightly excited |
失败响应¶
400 参数错误:
401 未认证:
500 服务异常:
错误响应体结构以实际返回为准,字段名可能因上游服务差异而不同。
HTTP 响应状态码¶
| 状态码 | 说明 |
|---|---|
200 |
成功(OK) |
400 |
参数错误(Bad request) |
401 |
需要认证(Unauthorized) |
500 |
系统内部错误(Internal server error) |
请求示例¶
参数说明¶
<file>替换为音频文件路径(支持 mp3、wav、m4a、flac、webm 格式);<model>替换为模型名称,可省略(缺省使用默认模型audeering/wav2vec2-large-robust-12-ft-emotion-msp-dim);- 本接口允许匿名访问,也可携带 AtomGit 用户访问令牌。
cURL¶
curl -X POST 'https://api.atomgit.com/api/v5/audio/classification' \
-H 'Accept: application/json' \
-F 'file=@<audio-file>' \
-F 'model=audeering/wav2vec2-large-robust-12-ft-emotion-msp-dim'
JavaScript¶
// 原生 fetch (Node.js 18+ / 浏览器)
const formData = new FormData();
formData.append("file", fileInput.files[0]);
formData.append("model", "audeering/wav2vec2-large-robust-12-ft-emotion-msp-dim");
const response = await fetch("https://api.atomgit.com/api/v5/audio/classification", {
method: "POST",
headers: {
"Accept": "application/json",
},
body: formData,
});
if (!response.ok) {
throw new Error(`请求失败: ${response.status}`);
}
const data = await response.json();
console.log(data);
Python¶
import requests
resp = requests.post(
"https://api.atomgit.com/api/v5/audio/classification",
headers={
"Accept": "application/json",
},
files={
"file": (
"audio.mp3",
open("audio.mp3", "rb"),
"audio/mpeg",
)
},
data={
"model": "audeering/wav2vec2-large-robust-12-ft-emotion-msp-dim",
},
timeout=10,
)
resp.raise_for_status()
print(resp.json())
响应示例¶
状态码: 200
{
"vector": null,
"emotion_class": {
"arousal": 0.38037118315696716,
"dominance": 0.4589272439479828,
"valence": 0.5078083276748657
},
"emotion_items": [
{
"label": "激动程度",
"label_en": "Arousal",
"value": "0.38037118315696716",
"value_desc": "偏平静",
"value_desc_en": "Calm"
},
{
"label": "情绪正负",
"label_en": "Valence",
"value": "0.5078083276748657",
"value_desc": "中性",
"value_desc_en": "Neutral"
},
{
"label": "控制感",
"label_en": "Dominance",
"value": "0.4589272439479828",
"value_desc": "中性",
"value_desc_en": "Medium Control"
}
]
}
注意: 响应为上游服务返回的原始 JSON,实际字段名(
emotion_class/emotion_class、emotionItems/emotion_items)与键名风格以实际返回为准。
错误码¶
| 错误码 | 说明 |
|---|---|
400 |
参数错误或请求无法解析 |
401 |
未认证或凭证无效 |
500 |
系统内部错误 |
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 gitcode-dev/atomgit-api-doc