文字转语音

This commit is contained in:
spllzh
2025-10-04 19:52:06 +08:00
parent 24c00c22ab
commit 06730b656e
51 changed files with 5157 additions and 8 deletions

View File

@@ -0,0 +1,112 @@
package com.rj.dto;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
/**
* SiliconFlow TTS 请求DTO
* https://docs.siliconflow.cn/cn/userguide/capabilities/text-to-speech#5
*
* 主要请求参数:
* model用于语音合成的模型支持的模型列表。
* input待转换为音频的文本内容。
* voice参考音色支持系统预置音色、用户预置音色、用户动态音色。 详细参数请参考:创建文本转语音请求。
* speed可以控制音频速度float类型默认值是1.0,可选范围是[0.25,4.0]
* gain音频增益单位dB可以控制音频声音大小float类型默认值是0.0,可选范围是[-10,10]
* response_format控制输出格式支持 mp3、opus、wav 和 pcm 格式。在选择不同的输出格式时,输出的采样率也会有所不同。
* sample_rate可以控制输出采样率对于不同的视频输出类型默认值和可取值范围均不同具体如下
* opus: 目前只支持48000hz
* wav, pcm: 支持 (8000, 16000, 24000, 32000, 44100), 默认44100
* mp3: 支持(32000, 44100), 默认44100
*
*
* @author rj
* @date 2025-01-02
*/
@Data
public class SiliconFlowTtsRequest {
/**
* TTS模型名称
*/
@JsonProperty("model")
private String model;
/**
* 要转换的文本内容
*/
@JsonProperty("input")
private String input;
/**
* 语音参数(必填)
* fnlp/MOSS-TTSD-v0.5 模型支持的voice值
* - fnlp/MOSS-TTSD-v0.5:alex (沉稳男声)
* - fnlp/MOSS-TTSD-v0.5:anna (沉稳女声)
* - fnlp/MOSS-TTSD-v0.5:bella (激情女声)
* - fnlp/MOSS-TTSD-v0.5:benjamin (低沉男声)
* - fnlp/MOSS-TTSD-v0.5:charles (磁性男声)
* - fnlp/MOSS-TTSD-v0.5:claire (温柔女声)
* - fnlp/MOSS-TTSD-v0.5:david (欢快男声)
* - fnlp/MOSS-TTSD-v0.5:diana (欢快女声)
*/
@JsonProperty("voice")
private String voice = "fnlp/MOSS-TTSD-v0.5:claire";
/**
* 语速(可选)
*/
@JsonProperty("speed")
private Double speed=1.0;
/**
* 音调(可选)
*/
@JsonProperty("pitch")
private Double pitch;
/**
* 音量(可选)
*/
@JsonProperty("volume")
private Double volume;
/**
* 输出格式(可选)
*/
@JsonProperty("format")
private String format;
/**
* 采样率(可选)
*/
@JsonProperty("sample_rate")
private Integer sampleRate;
/**
* 构造函数
*/
public SiliconFlowTtsRequest() {
}
/**
* 创建人姓名
*/
private String creatorName;
/**
* 创建人电话
*/
private String creatorPhone;
/**
* 构造函数
*
* @param model 模型名称
* @param input 输入文本
*/
public SiliconFlowTtsRequest(String model, String input) {
this.model = model;
this.input = input;
}
}