【优化】AI 音乐:生成支持指定模型生成,支持回写音乐时长

This commit is contained in:
xiaoxin 2024-06-28 13:46:56 +08:00
parent bdd7d0c1fd
commit 3acd058635
3 changed files with 18 additions and 10 deletions

View File

@ -30,7 +30,7 @@ public class AiMusicDO extends BaseDO {
/** /**
* 用户编号 * 用户编号
* * <p>
* 关联 AdminUserDO userId 字段 * 关联 AdminUserDO userId 字段
*/ */
private Long userId; private Long userId;
@ -67,7 +67,7 @@ public class AiMusicDO extends BaseDO {
/** /**
* 生成模式 * 生成模式
* * <p>
* 枚举 {@link AiMusicGenerateModeEnum} * 枚举 {@link AiMusicGenerateModeEnum}
*/ */
private Integer generateMode; private Integer generateMode;
@ -113,4 +113,10 @@ public class AiMusicDO extends BaseDO {
*/ */
private String errorMessage; private String errorMessage;
/**
* 音乐时长
*/
private Double duration;
} }

View File

@ -132,7 +132,7 @@ public class AiMusicServiceImpl implements AiMusicService {
return convertList(musicList, musicData -> new AiMusicDO() return convertList(musicList, musicData -> new AiMusicDO()
.setTaskId(musicData.id()).setModel(musicData.modelName()) .setTaskId(musicData.id()).setModel(musicData.modelName())
.setPrompt(musicData.prompt()).setGptDescriptionPrompt(musicData.gptDescriptionPrompt()) .setPrompt(musicData.prompt()).setGptDescriptionPrompt(musicData.gptDescriptionPrompt())
.setAudioUrl(createFile(musicData.audioUrl())).setVideoUrl(createFile(musicData.videoUrl())).setImageUrl(createFile(musicData.imageUrl())) .setAudioUrl(createFile(musicData.audioUrl())).setVideoUrl(createFile(musicData.videoUrl())).setImageUrl(createFile(musicData.imageUrl())).setDuration(musicData.duration())
.setTitle(musicData.title()).setLyric(musicData.lyric()).setTags(StrUtil.split(musicData.tags(), StrPool.COMMA)) .setTitle(musicData.title()).setLyric(musicData.lyric()).setTags(StrUtil.split(musicData.tags(), StrPool.COMMA))
.setStatus(Objects.equals("complete", musicData.status()) ? .setStatus(Objects.equals("complete", musicData.status()) ?
AiMusicStatusEnum.SUCCESS.getStatus() : AiMusicStatusEnum.IN_PROGRESS.getStatus())); AiMusicStatusEnum.SUCCESS.getStatus() : AiMusicStatusEnum.IN_PROGRESS.getStatus()));

View File

@ -117,7 +117,7 @@ public class SunoApi {
* @param prompt 用于生成音乐音频的提示 * @param prompt 用于生成音乐音频的提示
* @param tags 音乐风格 * @param tags 音乐风格
* @param title 音乐名称 * @param title 音乐名称
* @param mv 模型 * @param model 模型
* @param waitAudio false 表示后台模式仅返回音频任务信息需要调用 get API 获取详细的音频信息 * @param waitAudio false 表示后台模式仅返回音频任务信息需要调用 get API 获取详细的音频信息
* true 表示同步模式API 最多等待 100s音频生成完毕后直接返回音频链接等信息建议在 GPT agent 中使用 * true 表示同步模式API 最多等待 100s音频生成完毕后直接返回音频链接等信息建议在 GPT agent 中使用
* @param makeInstrumental 指示音乐音频是否为定制如果为 true则从歌词生成否则从提示生成 * @param makeInstrumental 指示音乐音频是否为定制如果为 true则从歌词生成否则从提示生成
@ -127,7 +127,7 @@ public class SunoApi {
String prompt, String prompt,
String tags, String tags,
String title, String title,
String mv, String model,
@JsonProperty("wait_audio") boolean waitAudio, @JsonProperty("wait_audio") boolean waitAudio,
@JsonProperty("make_instrumental") boolean makeInstrumental @JsonProperty("make_instrumental") boolean makeInstrumental
) { ) {
@ -136,12 +136,12 @@ public class SunoApi {
this(prompt, null, null, null, false, false); this(prompt, null, null, null, false, false);
} }
public MusicGenerateRequest(String prompt, String mv, boolean makeInstrumental) { public MusicGenerateRequest(String prompt, String model, boolean makeInstrumental) {
this(prompt, null, null, mv, false, makeInstrumental); this(prompt, null, null, model, false, makeInstrumental);
} }
public MusicGenerateRequest(String prompt, String mv, String tags, String title) { public MusicGenerateRequest(String prompt, String model, String tags, String title) {
this(prompt, tags, title, mv, false, false); this(prompt, tags, title, model, false, false);
} }
} }
@ -162,6 +162,7 @@ public class SunoApi {
* @param prompt 生成音乐音频的提示 * @param prompt 生成音乐音频的提示
* @param type 操作类型 * @param type 操作类型
* @param tags 音乐类型标签 * @param tags 音乐类型标签
* @param duration 音乐时长
*/ */
public record MusicData( public record MusicData(
String id, String id,
@ -176,7 +177,8 @@ public class SunoApi {
@JsonProperty("gpt_description_prompt") String gptDescriptionPrompt, @JsonProperty("gpt_description_prompt") String gptDescriptionPrompt,
String prompt, String prompt,
String type, String type,
String tags String tags,
Double duration
) { ) {
} }