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 | 30 | |
| 31 | 31 | /** |
| 32 | 32 | * 用户编号 |
| 33 | - * | |
| 33 | + * <p> | |
| 34 | 34 | * 关联 AdminUserDO 的 userId 字段 |
| 35 | 35 | */ |
| 36 | 36 | private Long userId; |
| ... | ... | @@ -67,7 +67,7 @@ public class AiMusicDO extends BaseDO { |
| 67 | 67 | |
| 68 | 68 | /** |
| 69 | 69 | * 生成模式 |
| 70 | - * | |
| 70 | + * <p> | |
| 71 | 71 | * 枚举 {@link AiMusicGenerateModeEnum} |
| 72 | 72 | */ |
| 73 | 73 | private Integer generateMode; |
| ... | ... | @@ -113,4 +113,10 @@ public class AiMusicDO extends BaseDO { |
| 113 | 113 | */ |
| 114 | 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 | 132 | return convertList(musicList, musicData -> new AiMusicDO() |
| 133 | 133 | .setTaskId(musicData.id()).setModel(musicData.modelName()) |
| 134 | 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 | 136 | .setTitle(musicData.title()).setLyric(musicData.lyric()).setTags(StrUtil.split(musicData.tags(), StrPool.COMMA)) |
| 137 | 137 | .setStatus(Objects.equals("complete", musicData.status()) ? |
| 138 | 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 | 117 | * @param prompt 用于生成音乐音频的提示 |
| 118 | 118 | * @param tags 音乐风格 |
| 119 | 119 | * @param title 音乐名称 |
| 120 | - * @param mv 模型 | |
| 120 | + * @param model 模型 | |
| 121 | 121 | * @param waitAudio false 表示后台模式,仅返回音频任务信息,需要调用 get API 获取详细的音频信息。 |
| 122 | 122 | * true 表示同步模式,API 最多等待 100s,音频生成完毕后直接返回音频链接等信息,建议在 GPT 等 agent 中使用。 |
| 123 | 123 | * @param makeInstrumental 指示音乐音频是否为定制,如果为 true,则从歌词生成,否则从提示生成 |
| ... | ... | @@ -127,7 +127,7 @@ public class SunoApi { |
| 127 | 127 | String prompt, |
| 128 | 128 | String tags, |
| 129 | 129 | String title, |
| 130 | - String mv, | |
| 130 | + String model, | |
| 131 | 131 | @JsonProperty("wait_audio") boolean waitAudio, |
| 132 | 132 | @JsonProperty("make_instrumental") boolean makeInstrumental |
| 133 | 133 | ) { |
| ... | ... | @@ -136,12 +136,12 @@ public class SunoApi { |
| 136 | 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 | 162 | * @param prompt 生成音乐音频的提示 |
| 163 | 163 | * @param type 操作类型 |
| 164 | 164 | * @param tags 音乐类型标签 |
| 165 | + * @param duration 音乐时长 | |
| 165 | 166 | */ |
| 166 | 167 | public record MusicData( |
| 167 | 168 | String id, |
| ... | ... | @@ -176,7 +177,8 @@ public class SunoApi { |
| 176 | 177 | @JsonProperty("gpt_description_prompt") String gptDescriptionPrompt, |
| 177 | 178 | String prompt, |
| 178 | 179 | String type, |
| 179 | - String tags | |
| 180 | + String tags, | |
| 181 | + Double duration | |
| 180 | 182 | ) { |
| 181 | 183 | } |
| 182 | 184 | ... | ... |