Added negative tags

This commit is contained in:
Abwasserrohr 2024-10-07 21:45:32 +02:00 committed by GitHub
parent 46305d01c4
commit 0e8a2f55a2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -23,6 +23,7 @@ export interface AudioInfo {
status: string; // Status status: string; // Status
type?: string; type?: string;
tags?: string; // Genre of music. tags?: string; // Genre of music.
negative_tags?: string; // Negative tags of music.
duration?: string; // Duration of the audio duration?: string; // Duration of the audio
error_message?: string; // Error message if any error_message?: string; // Error message if any
} }
@ -150,6 +151,7 @@ class SunoApi {
* @param title The title for the generated audio. * @param title The title for the generated audio.
* @param make_instrumental Indicates if the generated audio should be instrumental. * @param make_instrumental Indicates if the generated audio should be instrumental.
* @param wait_audio Indicates if the method should wait for the audio file to be fully generated before returning. * @param wait_audio Indicates if the method should wait for the audio file to be fully generated before returning.
* @param negative_tags Negative tags that should not be included in the generated audio.
* @returns A promise that resolves to an array of AudioInfo objects representing the generated audios. * @returns A promise that resolves to an array of AudioInfo objects representing the generated audios.
*/ */
public async custom_generate( public async custom_generate(
@ -159,9 +161,10 @@ class SunoApi {
make_instrumental: boolean = false, make_instrumental: boolean = false,
model?: string, model?: string,
wait_audio: boolean = false, wait_audio: boolean = false,
negative_tags?: string,
): Promise<AudioInfo[]> { ): Promise<AudioInfo[]> {
const startTime = Date.now(); const startTime = Date.now();
const audios = await this.generateSongs(prompt, true, tags, title, make_instrumental, model, wait_audio); const audios = await this.generateSongs(prompt, true, tags, title, make_instrumental, model, wait_audio, negative_tags);
const costTime = Date.now() - startTime; const costTime = Date.now() - startTime;
logger.info("Custom Generate Response:\n" + JSON.stringify(audios, null, 2)); logger.info("Custom Generate Response:\n" + JSON.stringify(audios, null, 2));
logger.info("Cost time: " + costTime); logger.info("Cost time: " + costTime);
@ -177,6 +180,7 @@ class SunoApi {
* @param title Optional title for the song, used only if isCustom is true. * @param title Optional title for the song, used only if isCustom is true.
* @param make_instrumental Indicates if the generated song should be instrumental. * @param make_instrumental Indicates if the generated song should be instrumental.
* @param wait_audio Indicates if the method should wait for the audio file to be fully generated before returning. * @param wait_audio Indicates if the method should wait for the audio file to be fully generated before returning.
* @param negative_tags Negative tags that should not be included in the generated audio.
* @returns A promise that resolves to an array of AudioInfo objects representing the generated songs. * @returns A promise that resolves to an array of AudioInfo objects representing the generated songs.
*/ */
private async generateSongs( private async generateSongs(
@ -186,7 +190,8 @@ class SunoApi {
title?: string, title?: string,
make_instrumental?: boolean, make_instrumental?: boolean,
model?: string, model?: string,
wait_audio: boolean = false wait_audio: boolean = false,
negative_tags?: string,
): Promise<AudioInfo[]> { ): Promise<AudioInfo[]> {
await this.keepAlive(false); await this.keepAlive(false);
const payload: any = { const payload: any = {
@ -197,6 +202,7 @@ class SunoApi {
if (isCustom) { if (isCustom) {
payload.tags = tags; payload.tags = tags;
payload.title = title; payload.title = title;
payload.negative_tags = negative_tags;
payload.prompt = prompt; payload.prompt = prompt;
} else { } else {
payload.gpt_description_prompt = prompt; payload.gpt_description_prompt = prompt;
@ -208,6 +214,7 @@ class SunoApi {
title: title, title: title,
make_instrumental: make_instrumental, make_instrumental: make_instrumental,
wait_audio: wait_audio, wait_audio: wait_audio,
negative_tags: negative_tags,
payload: payload, payload: payload,
}, null, 2)); }, null, 2));
const response = await this.client.post( const response = await this.client.post(
@ -259,6 +266,7 @@ class SunoApi {
prompt: audio.metadata.prompt, prompt: audio.metadata.prompt,
type: audio.metadata.type, type: audio.metadata.type,
tags: audio.metadata.tags, tags: audio.metadata.tags,
negative_tags: audio.metadata.negative_tags,
duration: audio.metadata.duration, duration: audio.metadata.duration,
})); }));
} }