Commit 3acd0586355e9c70bab48c89dac364a0a93c872a
1 parent
bdd7d0c1
【优化】AI 音乐:生成支持指定模型生成,支持回写音乐时长
Showing
3 changed files
with
18 additions
and
10 deletions
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/dal/dataobject/music/AiMusicDO.java
| @@ -30,7 +30,7 @@ public class AiMusicDO extends BaseDO { | @@ -30,7 +30,7 @@ public class AiMusicDO extends BaseDO { | ||
| 30 | 30 | ||
| 31 | /** | 31 | /** |
| 32 | * 用户编号 | 32 | * 用户编号 |
| 33 | - * | 33 | + * <p> |
| 34 | * 关联 AdminUserDO 的 userId 字段 | 34 | * 关联 AdminUserDO 的 userId 字段 |
| 35 | */ | 35 | */ |
| 36 | private Long userId; | 36 | private Long userId; |
| @@ -67,7 +67,7 @@ public class AiMusicDO extends BaseDO { | @@ -67,7 +67,7 @@ public class AiMusicDO extends BaseDO { | ||
| 67 | 67 | ||
| 68 | /** | 68 | /** |
| 69 | * 生成模式 | 69 | * 生成模式 |
| 70 | - * | 70 | + * <p> |
| 71 | * 枚举 {@link AiMusicGenerateModeEnum} | 71 | * 枚举 {@link AiMusicGenerateModeEnum} |
| 72 | */ | 72 | */ |
| 73 | private Integer generateMode; | 73 | private Integer generateMode; |
| @@ -113,4 +113,10 @@ public class AiMusicDO extends BaseDO { | @@ -113,4 +113,10 @@ public class AiMusicDO extends BaseDO { | ||
| 113 | */ | 113 | */ |
| 114 | private String errorMessage; | 114 | private String errorMessage; |
| 115 | 115 | ||
| 116 | + | ||
| 117 | + /** | ||
| 118 | + * 音乐时长 | ||
| 119 | + */ | ||
| 120 | + private Double duration; | ||
| 121 | + | ||
| 116 | } | 122 | } |
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/music/AiMusicServiceImpl.java
| @@ -132,7 +132,7 @@ public class AiMusicServiceImpl implements AiMusicService { | @@ -132,7 +132,7 @@ public class AiMusicServiceImpl implements AiMusicService { | ||
| 132 | return convertList(musicList, musicData -> new AiMusicDO() | 132 | return convertList(musicList, musicData -> new AiMusicDO() |
| 133 | .setTaskId(musicData.id()).setModel(musicData.modelName()) | 133 | .setTaskId(musicData.id()).setModel(musicData.modelName()) |
| 134 | .setPrompt(musicData.prompt()).setGptDescriptionPrompt(musicData.gptDescriptionPrompt()) | 134 | .setPrompt(musicData.prompt()).setGptDescriptionPrompt(musicData.gptDescriptionPrompt()) |
| 135 | - .setAudioUrl(createFile(musicData.audioUrl())).setVideoUrl(createFile(musicData.videoUrl())).setImageUrl(createFile(musicData.imageUrl())) | 135 | + .setAudioUrl(createFile(musicData.audioUrl())).setVideoUrl(createFile(musicData.videoUrl())).setImageUrl(createFile(musicData.imageUrl())).setDuration(musicData.duration()) |
| 136 | .setTitle(musicData.title()).setLyric(musicData.lyric()).setTags(StrUtil.split(musicData.tags(), StrPool.COMMA)) | 136 | .setTitle(musicData.title()).setLyric(musicData.lyric()).setTags(StrUtil.split(musicData.tags(), StrPool.COMMA)) |
| 137 | .setStatus(Objects.equals("complete", musicData.status()) ? | 137 | .setStatus(Objects.equals("complete", musicData.status()) ? |
| 138 | AiMusicStatusEnum.SUCCESS.getStatus() : AiMusicStatusEnum.IN_PROGRESS.getStatus())); | 138 | AiMusicStatusEnum.SUCCESS.getStatus() : AiMusicStatusEnum.IN_PROGRESS.getStatus())); |
yudao-module-ai/yudao-spring-boot-starter-ai/src/main/java/cn/iocoder/yudao/framework/ai/core/model/suno/api/SunoApi.java
| @@ -117,7 +117,7 @@ public class SunoApi { | @@ -117,7 +117,7 @@ public class SunoApi { | ||
| 117 | * @param prompt 用于生成音乐音频的提示 | 117 | * @param prompt 用于生成音乐音频的提示 |
| 118 | * @param tags 音乐风格 | 118 | * @param tags 音乐风格 |
| 119 | * @param title 音乐名称 | 119 | * @param title 音乐名称 |
| 120 | - * @param mv 模型 | 120 | + * @param model 模型 |
| 121 | * @param waitAudio false 表示后台模式,仅返回音频任务信息,需要调用 get API 获取详细的音频信息。 | 121 | * @param waitAudio false 表示后台模式,仅返回音频任务信息,需要调用 get API 获取详细的音频信息。 |
| 122 | * true 表示同步模式,API 最多等待 100s,音频生成完毕后直接返回音频链接等信息,建议在 GPT 等 agent 中使用。 | 122 | * true 表示同步模式,API 最多等待 100s,音频生成完毕后直接返回音频链接等信息,建议在 GPT 等 agent 中使用。 |
| 123 | * @param makeInstrumental 指示音乐音频是否为定制,如果为 true,则从歌词生成,否则从提示生成 | 123 | * @param makeInstrumental 指示音乐音频是否为定制,如果为 true,则从歌词生成,否则从提示生成 |
| @@ -127,7 +127,7 @@ public class SunoApi { | @@ -127,7 +127,7 @@ public class SunoApi { | ||
| 127 | String prompt, | 127 | String prompt, |
| 128 | String tags, | 128 | String tags, |
| 129 | String title, | 129 | String title, |
| 130 | - String mv, | 130 | + String model, |
| 131 | @JsonProperty("wait_audio") boolean waitAudio, | 131 | @JsonProperty("wait_audio") boolean waitAudio, |
| 132 | @JsonProperty("make_instrumental") boolean makeInstrumental | 132 | @JsonProperty("make_instrumental") boolean makeInstrumental |
| 133 | ) { | 133 | ) { |
| @@ -136,12 +136,12 @@ public class SunoApi { | @@ -136,12 +136,12 @@ public class SunoApi { | ||
| 136 | this(prompt, null, null, null, false, false); | 136 | this(prompt, null, null, null, false, false); |
| 137 | } | 137 | } |
| 138 | 138 | ||
| 139 | - public MusicGenerateRequest(String prompt, String mv, boolean makeInstrumental) { | ||
| 140 | - this(prompt, null, null, mv, false, makeInstrumental); | 139 | + public MusicGenerateRequest(String prompt, String model, boolean makeInstrumental) { |
| 140 | + this(prompt, null, null, model, false, makeInstrumental); | ||
| 141 | } | 141 | } |
| 142 | 142 | ||
| 143 | - public MusicGenerateRequest(String prompt, String mv, String tags, String title) { | ||
| 144 | - this(prompt, tags, title, mv, false, false); | 143 | + public MusicGenerateRequest(String prompt, String model, String tags, String title) { |
| 144 | + this(prompt, tags, title, model, false, false); | ||
| 145 | } | 145 | } |
| 146 | 146 | ||
| 147 | } | 147 | } |
| @@ -162,6 +162,7 @@ public class SunoApi { | @@ -162,6 +162,7 @@ public class SunoApi { | ||
| 162 | * @param prompt 生成音乐音频的提示 | 162 | * @param prompt 生成音乐音频的提示 |
| 163 | * @param type 操作类型 | 163 | * @param type 操作类型 |
| 164 | * @param tags 音乐类型标签 | 164 | * @param tags 音乐类型标签 |
| 165 | + * @param duration 音乐时长 | ||
| 165 | */ | 166 | */ |
| 166 | public record MusicData( | 167 | public record MusicData( |
| 167 | String id, | 168 | String id, |
| @@ -176,7 +177,8 @@ public class SunoApi { | @@ -176,7 +177,8 @@ public class SunoApi { | ||
| 176 | @JsonProperty("gpt_description_prompt") String gptDescriptionPrompt, | 177 | @JsonProperty("gpt_description_prompt") String gptDescriptionPrompt, |
| 177 | String prompt, | 178 | String prompt, |
| 178 | String type, | 179 | String type, |
| 179 | - String tags | 180 | + String tags, |
| 181 | + Double duration | ||
| 180 | ) { | 182 | ) { |
| 181 | } | 183 | } |
| 182 | 184 |