跳转至

MaaS_FishAudio

请求协议

Https

文生语音

请求URL

POST https://genaiapi.cloudsway.net/v1/ai/${ENDPOINT_PATH}/fishaudio/v1/tts

请求参数

Header

  • Authorization,Bearer \

  • Content-Type,支持application/json和application/msgpack

注意:使用application/msgpack时,需将请求体转换为msgpack格式传输

Body

参数名 字段类型 是否必填 默认值 描述
text string - 待合成语音文本
temperature number 0.7 0\~1,值越高越随机,越低越稳定
top_p number 0.7 0\~1,核采样,控制多样性
references object[] - ReferenceAudio数组
references.audio file - 原始音频字节数据,支持的格式:WAV、MP3、FLAC。为获得最佳效果,请使用 10-30 秒的清晰语音,并尽量减少背景噪音。
references.text string - 音频样本中所述内容的精确文字记录。准确性对语音克隆质量至关重要。
reference_id string - 声音模型 ID
prosody object - 输出速度和音量调节
prosody.speed string
1.0 速度。有效范围:0.5到2.0。1.0 = 正常速度,0.5 = 半速,2.0 = 双倍速度
prosody.volume number 0 音量,单位为分贝(dB)。0 = 无变化,正值 = 更大声,负值 = 更安静
prosody.normalize_loudness string true 将输出音量标准化,以使听觉感受的音量更加一致,仅限 S2-Pro。非必填,默认true
chunk_length int 300 用于处理的文本段大小。100 \<= x \<= 300
normalize bool true 对英文和中文文本进行标准化处理,同时提高数字的稳定性。
format
string mp3 输出音频格式:wav、pcm、mp3、opus
sample_rate int
音频采样率以 Hz 为单位。当为空时,使用该格式的默认值(大多数格式为 44100 Hz,opus 为 48000 Hz)。
mp3_bitrate int 128 MP3 码率,以 kbps 为单位,可选值:64、128、192 。只适用于格式为 mp3 的情况。
opus_bitrate int -1000 Opus的比特率,以bps为单位,可选值:-1000, 24000, 32000, 48000, 64000。-1000为自动,仅适用于格式为opus的情况。
latency string normal 延迟与质量的权衡:low, normal, balanced,分别表示最低延迟、最佳质量和均衡
max_new_tokens int 1024 每个文本片段可生成的最大音频token。
repetition_penalty number 1.2 重复音频模式的惩罚机制。数值高于 1.0 时会减少重复现象。
min_chunk_length int 50 分割成新块前的最小字符数。0 \<= x \<= 100
condition_on_previous_chunks boolean true 使用之前的音频作为上下文以保持语音一致性。
early_stop_threshold number 1 批处理的提前停止阈值:0 \<= x \<= 1

支持创建单声道语音和多声道语音 单声道可选方式:

  • 使用reference_id指定声音模型

  • 使用references(ReferenceAudio 数组)上传用户参考音频

多声道可选方式:

  • reference_id : 声音模型 ID 的数组,例如,["speaker-0-id", "speaker-1-id"],text : 使用说话人标签 <|speaker:0|><|speaker:1|> 等来指示说话人变化,例如 <|speaker:0|>你好!<|speaker:1|>你好啊!

  • references : 每个内部数组包含一个说话者的引用的 2D 数组,reference_id : 标识符数组(对于零样本学习而言,可以是任意字符串)

响应参数

返回值为音频数据

请求示例

curl --location 'https://genaiapi.cloudsway.net/v1/ai/${ENDPOINT_PATH}/fishaudio/v1/tts' \
--header 'Authorization: Bearer {YOUR_AK}' \
--header 'Content-Type: application/json' \
--data '{
    "text": "Hello! Welcome to Fish Audio.",
    "reference_id": "model-id",
    "temperature": 0.7,
    "top_p": 0.7,
    "prosody": {
      "speed": 1,
      "volume": 0,
      "normalize_loudness": true
    },
    "chunk_length": 300,
    "normalize": true,
    "format": "mp3",
    "sample_rate": 44100,
    "mp3_bitrate": 128,
    "latency": "normal",
    "max_new_tokens": 1024,
    "repetition_penalty": 1.2,
    "min_chunk_length": 50,
    "condition_on_previous_chunks": true,
    "early_stop_threshold": 1
}'

响应示例

返回值为音频数据

语音转文字

请求URL

POST https://genaiapi.cloudsway.net/v1/ai/${ENDPOINT_PATH}/fishaudio/v1/asr

请求参数

Header

  • Authorization,Bearer \

  • Content-Type,支持multipart/form-data和application/msgpack

Body

参数名 字段类型 是否必填 默认值 描述
audio file - 待转换为文字的音频文件
language string null 指定音频的语言。如果为空则自动检测
ignore_timestamps boolean true 是否在文本中返回精确的时间戳。对于短于30秒的音频,启用时间戳会增加延迟

响应参数

参数名 字段类型 描述
text string 转换后的文本内容
duration number 音频时长(秒)
segments object[] 分段数组,包含每段文本及其时间戳
segments.text string 该段的文本内容
segments.start number 该段开始时间(秒)
segments.end number 该段结束时间(秒)

请求示例

# 使用 form-data 方式
curl --location 'https://genaiapi.cloudsway.net/v1/ai/${ENDPOINT_PATH}/fishaudio/v1/asr' \
--header 'Authorization: Bearer {YOUR_AK}' \
--form 'audio=@"/path/to/audio.mp3"' \
--form 'language="zh"' \
--form 'ignore_timestamps=false'

# 或使用 msgpack 方式(需要先将请求体序列化为msgpack格式)
curl --location 'https://genaiapi.cloudsway.net/v1/ai/{ENDPOINT_PATH}/fishaudio/asr' \
--header 'Authorization: Bearer {YOUR_AK}' \
--header 'Content-Type: application/msgpack' \
--data-binary '@request.msgpack'

响应示例

{
  "text": "你好,欢迎使用Fish Audio语音转文字服务。",
  "duration": 5.2,
  "segments": [
    {
      "text": "你好,",
      "start": 0.0,
      "end": 0.8
    },
    {
      "text": "欢迎使用Fish Audio",
      "start": 0.8,
      "end": 3.5
    },
    {
      "text": "语音转文字服务。",
      "start": 3.5,
      "end": 5.2
    }
  ]
}

创建声音模型

请求URL

POST https://genaiapi.cloudsway.net/v1/ai/${ENDPOINT_PATH}/fishaudio/model

请求参数

Header

  • Authorization,Bearer \

  • Content-Type,支持multipart/form-data和application/msgpack

Body

参数名 字段类型 是否必填 默认值 描述
type string - 模型类型,固定为"tts"
title string - 模型标题或名称
train_mode string - 训练模式,固定为"fast",表示模型创建后可立即使用
voices
file[] - 用于调优模型的音频文件数组,支持WAV、MP3、FLAC格式
visibility string public 模型可见性:public(公开显示在发现页)、unlist(任何人可通过链接访问)、private(仅创建者可见)
description string 模型描述
cover_image file 模型封面图片,当visibility为public时必填
texts string[] 与voices对应的文本内容,如未指定将对音频执行ASR
tags string[] 模型标签
enhance_audio_quality boolean true 是否增强音频质量
generate_sample boolean false 是否生成默认文本样本

响应参数

参数名 字段类型 描述
_id string 模型ID
type string 模型类型(svc/tts)
title string 模型标题
description string 模型描述
cover_image string
train_mode string 训练模式(fast/full)
state string 模型状态(created/training/trained/failed)
tags string[] 标签数组
samples object[] 样本数组
samples.title string
samples.text string
samples.task_id string
samples.audio string
created_at string 创建时间
updated_at string 更新时间
languages string[] 语言数组
visibility string 可见性(public/unlist/private)
lock_visibility boolean 是否锁定可见性
dmca_taken_down boolean
default_text string
quality object
quality.created_at string
quality.updated_at string
quality.audios object[]
quality.audios.filename string
quality.audios.duration_ms string
quality.audios.language string
quality.audios.quality object
quality.audios.quality.{key} string
quality.audios.quality_passed string
quality.audios.quality_reason string
like_count integer 点赞数
mark_count integer 收藏数
shared_count integer 分享数
task_count integer 任务数
author object 作者信息
author._id string
author.nickname string
author.avatar string
unliked boolean
liked boolean
marked boolean

请求示例

# 使用 multipart/form-data 方式
curl --location 'https://genaiapi.cloudsway.net/v1/ai/${ENDPOINT_PATH}/fishaudio/model' \
--header 'Authorization: Bearer {YOUR_AK}' \
--form 'type="tts"' \
--form 'title="我的声音模型"' \
--form 'train_mode="fast"' \
--form 'voices=@"/path/to/audio1.wav"' \
--form 'voices=@"/path/to/audio2.wav"' \
--form 'texts="这是第一段音频的文本"' \
--form 'texts="这是第二段音频的文本"' \
--form 'visibility="private"' \
--form 'tags=["中文","女声"]' \
--form 'enhance_audio_quality=true'

# 或使用 msgpack 方式
curl --location 'https://genaiapi.cloudsway.net/v1/ai/{ENDPOINT_PATH}/fishaudio/model' \
--header 'Authorization: Bearer {YOUR_AK}' \
--header 'Content-Type: application/msgpack' \
--data-binary '@request.msgpack'

响应示例

{
  "_id": "model-abc123",
  "type": "tts",
  "title": "我的声音模型",
  "description": "",
  "cover_image": "",
  "train_mode": "fast",
  "state": "created",
  "tags": ["中文", "女声"],
  "samples": [],
  "created_at": "2024-01-01T00:00:00Z",
  "updated_at": "2024-01-01T00:00:00Z",
  "languages": ["zh"],
  "visibility": "private",
  "lock_visibility": false,
  "dmca_taken_down": null,
  "default_text": "",
  "quality": null,
  "like_count": 0,
  "mark_count": 0,
  "shared_count": 0,
  "task_count": 0,
  "unliked": false,
  "liked": false,
  "marked": false,
  "author": {
    "_id": "user-xyz789",
    "nickname": "用户名",
    "avatar": "https://example.com/avatar.jpg"
  }
}

获取模型列表

请求URL

GET https://genaiapi.cloudsway.net/v1/ai/${ENDPOINT_PATH}/fishaudio/model

请求参数

Header

  • Authorization,Bearer \

Query Parameters

参数名 字段类型 是否必填 默认值 描述
page_size integer 10 每页数量,最小值为1
page_number integer 1 页码,最小值为1
title string null 按标题过滤模型
tag string[] null 按标签过滤模型,支持单个标签或标签数组
self boolean false 如果为true,仅返回当前用户创建的模型
author_id string
null 按作者ID过滤,当self为true时忽略此参数
language string[] null 按语言过滤模型
title_language string[] null 按标题语言过滤模型
sort_by string
score 排序方式:score(评分)、task_count(任务数)、created_at(创建时间)

响应参数

参数名 字段类型 描述
total integer 模型总数
items object[] 模型列表数组
items._id string 模型ID
items.type string 模型类型(svc/tts)
items.title string 模型标题
items.state string 模型状态(created/training/trained/failed)
items.tags string[] 标签数组
items.created_at string 创建时间
items.updated_at string 更新时间
items.visibility string 可见性(public/unlist/private)
items.like_count integer 点赞数
items.mark_count integer 收藏数
items.shared_count integer 分享数
items.task_count integer 任务数
items.author AuthorEntity 作者信息
items.author._id string 作者ID
items.author.nickname string 作者昵称
items.author.avatar string 作者头像URL
items.description string 模型描述
items.cover_image string 封面图片URL
items.train_mode string 训练模式(fast/full)
items.samples object[] 样本数组
items.samples.title string 样本标题
items.samples.text string 样本文本内容
items.samples.task_id string 任务ID
items.samples.audio string 音频URL
items.languages string[] 语言数组
items.lock_visibility boolean 是否锁定可见性
items.dmca_taken_down boolean null
items.default_text string 默认文本
items.quality object null
items.quality.audios object[] 音频质量评估数组
items.quality.audios.filename string 文件名
items.quality.audios.duration_ms number 时长(毫秒)
items.quality.audios.language string 语言
items.quality.audios.quality object 质量评分对象
items.quality.audios.quality.{key} number
items.quality.audios.quality_passed boolean 是否通过质量检测
items.quality.audios.quality_reason string 质量评估原因
items.quality.created_at string 质量评估创建时间
items.quality.updated_at string 质量评估更新时间
items.unliked boolean 是否未点赞
items.liked boolean 是否已点赞
items.marked boolean 是否已收藏
has_more boolean null

请求示例

curl --location 'https://genaiapi.cloudsway.net/v1/ai/${ENDPOINT_PATH}/fishaudio/model?page_size=10&page_number=1&sort_by=created_at' \
--header 'Authorization: Bearer {YOUR_AK}'

响应示例

{
  "total": 25,
  "items": [
    {
      "_id": "model-abc123",
      "type": "tts",
      "title": "我的声音模型",
      "description": "这是一个测试模型",
      "cover_image": "https://example.com/cover.jpg",
      "train_mode": "fast",
      "state": "trained",
      "tags": ["中文", "女声"],
      "samples": [
        {
          "title": "样本1",
          "text": "你好世界",
          "task_id": "task-001",
          "audio": "https://example.com/sample1.mp3"
        }
      ],
      "created_at": "2024-01-01T00:00:00Z",
      "updated_at": "2024-01-02T00:00:00Z",
      "languages": ["zh"],
      "visibility": "public",
      "lock_visibility": false,
      "dmca_taken_down": false,
      "default_text": "",
      "quality": null,
      "like_count": 10,
      "mark_count": 5,
      "shared_count": 3,
      "task_count": 100,
      "unliked": false,
      "liked": true,
      "marked": false,
      "author": {
        "_id": "user-xyz789",
        "nickname": "用户名",
        "avatar": "https://example.com/avatar.jpg"
      }
    }
  ],
  "has_more": true
}

获取模型详情

请求URL

GET https://genaiapi.cloudsway.net/v1/ai/${ENDPOINT_PATH}/fishaudio/model/{id}

请求参数

Header

  • Authorization,Bearer \

Path Parameters

参数名 字段类型 是否必填 描述
id string 模型ID

响应参数

参数名 字段类型 描述
_id string 模型ID
type string 模型类型(svc/tts)
title string 模型标题
state string 模型状态(created/training/trained/failed)
tags string[] 标签数组
created_at string 创建时间
updated_at string 更新时间
visibility string 可见性(public/unlist/private)
like_count integer 点赞数
mark_count integer 收藏数
shared_count integer 分享数
task_count integer 任务数
author AuthorEntity 作者信息
author._id string 作者ID
author.nickname string 作者昵称
author.avatar string 作者头像URL
description string 模型描述
cover_image string 封面图片URL
train_mode string 训练模式(fast/full)
samples object[] 样本数组
samples.title string 样本标题
samples.text string 样本文本内容
samples.task_id string 任务ID
samples.audio string 音频URL
languages string[] 语言数组
lock_visibility boolean 是否锁定可见性
dmca_taken_down boolean null
default_text string 默认文本
quality object null
quality.audios object[] 音频质量评估数组
quality.audios.filename string 文件名
quality.audios.duration_ms number 时长(毫秒)
quality.audios.language string 语言
quality.audios.quality object 质量评分对象
quality.audios.quality.{key} number
quality.audios.quality_passed boolean 是否通过质量检测
quality.audios.quality_reason string 质量评估原因
quality.created_at string 质量评估创建时间
quality.updated_at string 质量评估更新时间
unliked boolean 是否未点赞
liked boolean 是否已点赞
marked boolean 是否已收藏

请求示例

curl --location 'https://genaiapi.cloudsway.net/v1/ai/${ENDPOINT_PATH}/fishaudio/model/{model_id}' \
--header 'Authorization: Bearer {YOUR_AK}'

响应示例

{
  "_id": "model-abc123",
  "type": "tts",
  "title": "我的声音模型",
  "description": "这是一个测试模型",
  "cover_image": "https://example.com/cover.jpg",
  "train_mode": "fast",
  "state": "trained",
  "tags": ["中文", "女声"],
  "samples": [
    {
      "title": "样本1",
      "text": "你好世界",
      "task_id": "task-001",
      "audio": "https://example.com/sample1.mp3"
    }
  ],
  "created_at": "2024-01-01T00:00:00Z",
  "updated_at": "2024-01-02T00:00:00Z",
  "languages": ["zh"],
  "visibility": "public",
  "lock_visibility": false,
  "dmca_taken_down": false,
  "default_text": "",
  "quality": {
    "audios": [
      {
        "filename": "sample1.wav",
        "duration_ms": 5000,
        "language": "zh",
        "quality": {"score": 0.95},
        "quality_passed": true,
        "quality_reason": ""
      }
    ],
    "created_at": "2024-01-01T00:00:00Z",
    "updated_at": "2024-01-01T00:00:00Z"
  },
  "like_count": 10,
  "mark_count": 5,
  "shared_count": 3,
  "task_count": 100,
  "unliked": false,
  "liked": true,
  "marked": false,
  "author": {
    "_id": "user-xyz789",
    "nickname": "用户名",
    "avatar": "https://example.com/avatar.jpg"
  }
}

更新模型

请求URL

PATCH https://genaiapi.cloudsway.net/v1/ai/${ENDPOINT_PATH}/fishaudio/model/{id}

请求参数

Header

  • Authorization,Bearer \

  • Content-Type,支持multipart/form-data

Path Parameters

参数名 字段类型 是否必填 描述
id string 模型ID

body参数

参数名 字段类型 是否必填 默认值 描述
title string null 模型标题
description string null 模型描述
cover_image file null 模型封面图片
visibility string null 可见性:public/unlist/private
tags string[] null 模型标签数组或字符串

响应参数

成功响应(200):无返回内容

请求示例

curl --location --request PATCH 'https://genaiapi.cloudsway.net/v1/ai/${ENDPOINT_PATH}/fishaudio/model/model-abc123' \
--header 'Authorization: Bearer {YOUR_AK}' \
--form 'cover_image=@"/path/to/new-cover.jpg"' \
--form 'visibility="private"'

响应示例

成功响应(200):无返回内容

删除模型

请求URL

DELETE https://genaiapi.cloudsway.net/v1/ai/${ENDPOINT_PATH}/fishaudio/model/{id}

请求参数

Header

  • Authorization,Bearer \

Path Parameters

参数名 字段类型 是否必填 描述
id string 模型ID

响应参数

成功响应(200):无返回内容

请求示例

curl --location --request DELETE 'https://genaiapi.cloudsway.net/v1/ai/${ENDPOINT_PATH}/fishaudio/model/model-abc123' \
--header 'Authorization: Bearer {YOUR_AK}'

响应示例

成功响应(200):无返回内容