文字转语音
This commit is contained in:
@@ -87,6 +87,10 @@ public class DifyWorkflowResponseDto {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
112
src/main/java/com/rj/dto/SiliconFlowTtsRequest.java
Normal file
112
src/main/java/com/rj/dto/SiliconFlowTtsRequest.java
Normal 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;
|
||||
}
|
||||
}
|
||||
137
src/main/java/com/rj/dto/SiliconFlowTtsResponse.java
Normal file
137
src/main/java/com/rj/dto/SiliconFlowTtsResponse.java
Normal file
@@ -0,0 +1,137 @@
|
||||
package com.rj.dto;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* SiliconFlow TTS 响应DTO
|
||||
*
|
||||
* @author rj
|
||||
* @date 2025-01-02
|
||||
*/
|
||||
@Data
|
||||
public class SiliconFlowTtsResponse {
|
||||
|
||||
/**
|
||||
* 音频数据(Base64编码)
|
||||
*/
|
||||
@JsonProperty("audio")
|
||||
private String audio;
|
||||
|
||||
/**
|
||||
* 音频格式
|
||||
*/
|
||||
@JsonProperty("format")
|
||||
private String format;
|
||||
|
||||
/**
|
||||
* 采样率
|
||||
*/
|
||||
@JsonProperty("sample_rate")
|
||||
private Integer sampleRate;
|
||||
|
||||
/**
|
||||
* 音频时长(秒)
|
||||
*/
|
||||
@JsonProperty("duration")
|
||||
private Double duration;
|
||||
|
||||
/**
|
||||
* 错误信息
|
||||
*/
|
||||
@JsonProperty("error")
|
||||
private String error;
|
||||
|
||||
/**
|
||||
* 错误代码
|
||||
*/
|
||||
@JsonProperty("error_code")
|
||||
private String errorCode;
|
||||
|
||||
/**
|
||||
* 请求ID
|
||||
*/
|
||||
@JsonProperty("request_id")
|
||||
private String requestId;
|
||||
|
||||
/**
|
||||
* 是否成功
|
||||
*/
|
||||
private boolean success;
|
||||
|
||||
/**
|
||||
* 错误消息
|
||||
*/
|
||||
private String message;
|
||||
|
||||
/**
|
||||
* MinIO访问URL
|
||||
*/
|
||||
private String minioUrl;
|
||||
|
||||
/**
|
||||
* 短链临时访问URL
|
||||
*/
|
||||
private String shortUrl;
|
||||
|
||||
/**
|
||||
* 短链过期时间
|
||||
*/
|
||||
private LocalDateTime shortUrlExpireTime;
|
||||
|
||||
/**
|
||||
* 构造函数
|
||||
*/
|
||||
public SiliconFlowTtsResponse() {
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建成功响应
|
||||
*
|
||||
* @param audio 音频数据
|
||||
* @param format 音频格式
|
||||
* @param sampleRate 采样率
|
||||
* @param duration 时长
|
||||
* @return 成功响应
|
||||
*/
|
||||
public static SiliconFlowTtsResponse success(String audio, String format, Integer sampleRate, Double duration) {
|
||||
SiliconFlowTtsResponse response = new SiliconFlowTtsResponse();
|
||||
response.setSuccess(true);
|
||||
response.setAudio(audio);
|
||||
response.setFormat(format);
|
||||
response.setSampleRate(sampleRate);
|
||||
response.setDuration(duration);
|
||||
return response;
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建错误响应
|
||||
*
|
||||
* @param error 错误信息
|
||||
* @param errorCode 错误代码
|
||||
* @return 错误响应
|
||||
*/
|
||||
public static SiliconFlowTtsResponse error(String error, String errorCode) {
|
||||
SiliconFlowTtsResponse response = new SiliconFlowTtsResponse();
|
||||
response.setSuccess(false);
|
||||
response.setError(error);
|
||||
response.setErrorCode(errorCode);
|
||||
response.setMessage(error);
|
||||
return response;
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建错误响应
|
||||
*
|
||||
* @param message 错误消息
|
||||
* @return 错误响应
|
||||
*/
|
||||
public static SiliconFlowTtsResponse error(String message) {
|
||||
SiliconFlowTtsResponse response = new SiliconFlowTtsResponse();
|
||||
response.setSuccess(false);
|
||||
response.setMessage(message);
|
||||
return response;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user