diff --git a/clientlibs/utils.js b/clientlibs/utils.js index 56f3f67..66067ae 100644 --- a/clientlibs/utils.js +++ b/clientlibs/utils.js @@ -1251,6 +1251,12 @@ function audioSettingsToggleHandler(settingsNode) { const useTemperatureWidget = settingsNode.widgets.find(w => w && w.name === "useTemperature"); const temperatureWidget = settingsNode.widgets.find(w => w && w.name === "temperature"); + const useAudioTemperatureWidget = settingsNode.widgets.find(w => w && w.name === "useAudioTemperature"); + const audioTemperatureWidget = settingsNode.widgets.find(w => w && w.name === "audioTemperature"); + const useTopKWidget = settingsNode.widgets.find(w => w && w.name === "useTopK"); + const topKWidget = settingsNode.widgets.find(w => w && w.name === "topK"); + const useIncludePrefixWidget = settingsNode.widgets.find(w => w && w.name === "useIncludePrefix"); + const includePrefixWidget = settingsNode.widgets.find(w => w && w.name === "includePrefix"); const useLyricsWidget = settingsNode.widgets.find(w => w && w.name === "useLyrics"); const lyricsWidget = settingsNode.widgets.find(w => w && w.name === "lyrics"); const useGuidanceTypeWidget = settingsNode.widgets.find(w => w && w.name === "useGuidanceType"); @@ -1299,6 +1305,9 @@ function audioSettingsToggleHandler(settingsNode) { } if (useTemperatureWidget && temperatureWidget) toggleWidgetState(useTemperatureWidget, temperatureWidget, "temperature"); + if (useAudioTemperatureWidget && audioTemperatureWidget) toggleWidgetState(useAudioTemperatureWidget, audioTemperatureWidget, "audioTemperature"); + if (useTopKWidget && topKWidget) toggleWidgetState(useTopKWidget, topKWidget, "topK"); + if (useIncludePrefixWidget && includePrefixWidget) toggleWidgetState(useIncludePrefixWidget, includePrefixWidget, "includePrefix"); if (useLyricsWidget && lyricsWidget) toggleWidgetState(useLyricsWidget, lyricsWidget, "lyrics"); if (useGuidanceTypeWidget && guidanceTypeWidget) toggleWidgetState(useGuidanceTypeWidget, guidanceTypeWidget, "guidanceType"); if (useLanguageBoostWidget && languageBoostWidget) toggleWidgetState(useLanguageBoostWidget, languageBoostWidget, "languageBoost"); @@ -3040,6 +3049,7 @@ function audioModelSearchFilterHandler(audioModelSearchNode) { ], "Dia": [ "runware:dia@v1.0 (Dia 1.6B)", + "runware:dia2@2b (Dia2 2B)", ], "xAI": [ "xai:voice@tts (xAI TTS)", diff --git a/modules/audioInference.py b/modules/audioInference.py index c41558c..135cfd3 100644 --- a/modules/audioInference.py +++ b/modules/audioInference.py @@ -136,7 +136,7 @@ class RunwareAudioInference: "tooltip": "Custom inputs for audio generation (e.g., video URL for audio extraction)" }), "settings": ("RUNWAREAUDIOSETTINGS", { - "tooltip": "Connect Runware Audio Inference Settings for lyrics, guidanceType, languageBoost, turbo, temperature, textNormalization, xVectorOnly, maxNewTokens, transcript, etc." + "tooltip": "Connect Runware Audio Inference Settings for includePrefix, topK, temperature, audioTemperature, lyrics, guidanceType, languageBoost, turbo, textNormalization, xVectorOnly, maxNewTokens, transcript, etc." }), "speech": ("RUNWARESPEECH", { "tooltip": "Connect Runware Audio Inference Speech for speech synthesis (e.g. Minimax)" diff --git a/modules/audioModelSearch.py b/modules/audioModelSearch.py index a003590..24ba42e 100644 --- a/modules/audioModelSearch.py +++ b/modules/audioModelSearch.py @@ -26,6 +26,7 @@ class RunwareAudioModelSearch: ], "Dia": [ "runware:dia@v1.0 (Dia 1.6B)", + "runware:dia2@2b (Dia2 2B)", ], "xAI": [ "xai:voice@tts (xAI TTS)", diff --git a/modules/audioSettings.py b/modules/audioSettings.py index ebe062b..ca84784 100644 --- a/modules/audioSettings.py +++ b/modules/audioSettings.py @@ -28,12 +28,44 @@ class RunwareAudioSettings: "default": False, }), "temperature": ("FLOAT", { - "tooltip": "Temperature value for audio generation. Higher values increase diversity, lower values make output more deterministic. Only used when 'Use Temperature' is enabled.", - "default": 1.0, + "tooltip": "Sampling temperature for text token generation. Lower values produce more coherent, predictable speech content. Higher values increase variety but risk artifacts. Set 0 for greedy decoding. Only used when 'Use Temperature' is enabled.", + "default": 0.6, "min": 0.0, - "max": 2.0, + "max": 5.0, "step": 0.1, }), + "useAudioTemperature": ("BOOLEAN", { + "tooltip": "Enable to include audioTemperature in audio generation settings", + "default": False, + }), + "audioTemperature": ("FLOAT", { + "tooltip": "Sampling temperature for audio token generation. Lower values produce cleaner, more stable audio. Higher values add expressiveness but may introduce noise. Set 0 for greedy decoding. Only used when 'Use Audio Temperature' is enabled.", + "default": 0.8, + "min": 0.0, + "max": 5.0, + "step": 0.1, + }), + "useTopK": ("BOOLEAN", { + "tooltip": "Enable to include topK token sampling in audio generation settings", + "default": False, + }), + "topK": ("INT", { + "tooltip": "Top-K candidates for both text and audio token sampling. Limits sampling to the K most likely next tokens at each step. Only used when 'Use Top K' is enabled.", + "default": 50, + "min": 1, + "max": 500, + "step": 1, + }), + "useIncludePrefix": ("BOOLEAN", { + "tooltip": "Enable to include includePrefix in audio generation settings", + "default": False, + }), + "includePrefix": ("BOOLEAN", { + "tooltip": "When voice cloning, keep prefix audio in output (true) or trim to new speech (false). Requires at least prefix_audio_speaker_1 input. Only used when 'Use Include Prefix' is enabled.", + "default": False, + "label_on": "true", + "label_off": "false", + }), "useLyrics": ("BOOLEAN", { "tooltip": "Enable to include lyrics in audio generation settings", "default": False, @@ -198,6 +230,12 @@ class RunwareAudioSettings: """Create audio settings dict for API""" use_temperature = kwargs.get("useTemperature", False) temperature = kwargs.get("temperature", 1.0) + use_audio_temperature = kwargs.get("useAudioTemperature", False) + audio_temperature = kwargs.get("audioTemperature", 0.8) + use_top_k = kwargs.get("useTopK", False) + top_k = kwargs.get("topK", 50) + use_include_prefix = kwargs.get("useIncludePrefix", False) + include_prefix = kwargs.get("includePrefix", False) use_lyrics = kwargs.get("useLyrics", False) lyrics = kwargs.get("lyrics", "") use_guidance_type = kwargs.get("useGuidanceType", False) @@ -233,6 +271,12 @@ class RunwareAudioSettings: if use_temperature: settings["temperature"] = float(temperature) + if use_audio_temperature: + settings["audioTemperature"] = float(audio_temperature) + if use_top_k: + settings["topK"] = int(top_k) + if use_include_prefix: + settings["includePrefix"] = bool(include_prefix) if use_lyrics and lyrics and lyrics.strip(): settings["lyrics"] = lyrics.strip() diff --git a/workflows/Runware_Audio_Inference_Dia_2.json b/workflows/Runware_Audio_Inference_Dia_2.json new file mode 100644 index 0000000..9c51ed7 --- /dev/null +++ b/workflows/Runware_Audio_Inference_Dia_2.json @@ -0,0 +1 @@ +{"id":"5549ed01-3c63-4157-a500-1c576048515a","revision":0,"last_node_id":43,"last_link_id":48,"nodes":[{"id":37,"type":"Runware Audio Inference","pos":[662.5560302734375,-192.11276245117188],"size":[400,746],"flags":{},"order":3,"mode":0,"inputs":[{"localized_name":"model","name":"model","type":"RUNWAREAUDIOMODEL","link":40},{"localized_name":"inputs","name":"inputs","shape":7,"type":"RUNWAREAUDIOINFERENCEINPUTS","link":null},{"localized_name":"settings","name":"settings","shape":7,"type":"RUNWAREAUDIOSETTINGS","link":48},{"localized_name":"speech","name":"speech","shape":7,"type":"RUNWARESPEECH","link":44},{"localized_name":"voiceModify","name":"voiceModify","shape":7,"type":"RUNWAREVOICEMODIFY","link":null},{"localized_name":"providerSettings","name":"providerSettings","shape":7,"type":"RUNWAREPROVIDERSETTINGS","link":null},{"localized_name":"usePositivePrompt","name":"usePositivePrompt","type":"BOOLEAN","widget":{"name":"usePositivePrompt"},"link":null},{"localized_name":"positivePrompt","name":"positivePrompt","type":"STRING","widget":{"name":"positivePrompt"},"link":null},{"localized_name":"negativePrompt","name":"negativePrompt","type":"STRING","widget":{"name":"negativePrompt"},"link":null},{"localized_name":"useDuration","name":"useDuration","type":"BOOLEAN","widget":{"name":"useDuration"},"link":null},{"localized_name":"duration","name":"duration","type":"INT","widget":{"name":"duration"},"link":null},{"localized_name":"useSampleRate","name":"useSampleRate","type":"BOOLEAN","widget":{"name":"useSampleRate"},"link":null},{"localized_name":"sampleRate","name":"sampleRate","type":"COMBO","widget":{"name":"sampleRate"},"link":null},{"localized_name":"useBitrate","name":"useBitrate","type":"BOOLEAN","widget":{"name":"useBitrate"},"link":null},{"localized_name":"bitrate","name":"bitrate","type":"COMBO","widget":{"name":"bitrate"},"link":null},{"localized_name":"useChannels","name":"useChannels","type":"BOOLEAN","widget":{"name":"useChannels"},"link":null},{"localized_name":"channels","name":"channels","type":"INT","widget":{"name":"channels"},"link":null},{"localized_name":"outputType","name":"outputType","type":"COMBO","widget":{"name":"outputType"},"link":null},{"localized_name":"outputFormat","name":"outputFormat","type":"COMBO","widget":{"name":"outputFormat"},"link":null},{"localized_name":"numberResults","name":"numberResults","type":"INT","widget":{"name":"numberResults"},"link":null},{"localized_name":"useSeed","name":"useSeed","type":"BOOLEAN","widget":{"name":"useSeed"},"link":null},{"localized_name":"seed","name":"seed","type":"INT","widget":{"name":"seed"},"link":null},{"localized_name":"useSteps","name":"useSteps","type":"BOOLEAN","widget":{"name":"useSteps"},"link":null},{"localized_name":"steps","name":"steps","type":"INT","widget":{"name":"steps"},"link":null},{"localized_name":"useStrength","name":"useStrength","type":"BOOLEAN","widget":{"name":"useStrength"},"link":null},{"localized_name":"strength","name":"strength","type":"FLOAT","widget":{"name":"strength"},"link":null},{"localized_name":"useCFGScale","name":"useCFGScale","type":"BOOLEAN","widget":{"name":"useCFGScale"},"link":null},{"localized_name":"CFGScale","name":"CFGScale","type":"FLOAT","widget":{"name":"CFGScale"},"link":null}],"outputs":[{"localized_name":"audio","name":"audio","type":"AUDIO","links":[42]},{"localized_name":"video","name":"video","type":"VIDEO","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"3990adaa69e1da20efe5f4c6b8dd505ab9b998f0","Node name for S&R":"Runware Audio Inference"},"widgets_values":[false,"","",false,10,false,44100,false,128,false,2,"URL","MP3",1,false,1626265756,"randomize",false,20,false,0.8,false,12],"bgcolor":"#5345bf"},{"id":16,"type":"SaveAudioMP3","pos":[1111.5191650390625,-186.8231964111328],"size":[270,136],"flags":{},"order":4,"mode":0,"inputs":[{"localized_name":"audio","name":"audio","type":"AUDIO","link":42},{"localized_name":"filename_prefix","name":"filename_prefix","type":"STRING","widget":{"name":"filename_prefix"},"link":null},{"localized_name":"quality","name":"quality","type":"COMBO","widget":{"name":"quality"},"link":null},{"localized_name":"audioUI","name":"audioUI","type":"AUDIO_UI","widget":{"name":"audioUI"},"link":null}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"SaveAudioMP3"},"widgets_values":["audio/ComfyUI","V0"]},{"id":18,"type":"Runware Audio Model Search","pos":[323.36553955078125,-158.066650390625],"size":[270,130],"flags":{},"order":1,"mode":0,"inputs":[{"localized_name":"Model Search","name":"Model Search","type":"STRING","widget":{"name":"Model Search"},"link":null},{"localized_name":"Model Provider","name":"Model Provider","type":"COMBO","widget":{"name":"Model Provider"},"link":null},{"localized_name":"AudioList","name":"AudioList","type":"COMBO","widget":{"name":"AudioList"},"link":null},{"localized_name":"Use Search Value","name":"Use Search Value","type":"BOOLEAN","widget":{"name":"Use Search Value"},"link":null}],"outputs":[{"localized_name":"model","name":"model","type":"RUNWAREAUDIOMODEL","links":[40]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"5e5e2b3fac2c984692b057e4e607d778a8c73e40","Node name for S&R":"Runware Audio Model Search"},"widgets_values":["runware:dia2@2b","Dia","runware:dia@v1.0 (Dia 1.6B)",true],"bgcolor":"#5345bf"},{"id":43,"type":"Runware Audio Inference Settings","pos":[1134.439697265625,38.42496871948242],"size":[400,1006],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"useTemperature","name":"useTemperature","shape":7,"type":"BOOLEAN","widget":{"name":"useTemperature"},"link":null},{"localized_name":"temperature","name":"temperature","shape":7,"type":"FLOAT","widget":{"name":"temperature"},"link":null},{"localized_name":"useAudioTemperature","name":"useAudioTemperature","shape":7,"type":"BOOLEAN","widget":{"name":"useAudioTemperature"},"link":null},{"localized_name":"audioTemperature","name":"audioTemperature","shape":7,"type":"FLOAT","widget":{"name":"audioTemperature"},"link":null},{"localized_name":"useTopK","name":"useTopK","shape":7,"type":"BOOLEAN","widget":{"name":"useTopK"},"link":null},{"localized_name":"topK","name":"topK","shape":7,"type":"INT","widget":{"name":"topK"},"link":null},{"localized_name":"useIncludePrefix","name":"useIncludePrefix","shape":7,"type":"BOOLEAN","widget":{"name":"useIncludePrefix"},"link":null},{"localized_name":"includePrefix","name":"includePrefix","shape":7,"type":"BOOLEAN","widget":{"name":"includePrefix"},"link":null},{"localized_name":"useLyrics","name":"useLyrics","shape":7,"type":"BOOLEAN","widget":{"name":"useLyrics"},"link":null},{"localized_name":"lyrics","name":"lyrics","shape":7,"type":"STRING","widget":{"name":"lyrics"},"link":null},{"localized_name":"useGuidanceType","name":"useGuidanceType","shape":7,"type":"BOOLEAN","widget":{"name":"useGuidanceType"},"link":null},{"localized_name":"guidanceType","name":"guidanceType","shape":7,"type":"COMBO","widget":{"name":"guidanceType"},"link":null},{"localized_name":"useLanguageBoost","name":"useLanguageBoost","shape":7,"type":"BOOLEAN","widget":{"name":"useLanguageBoost"},"link":null},{"localized_name":"languageBoost","name":"languageBoost","shape":7,"type":"COMBO","widget":{"name":"languageBoost"},"link":null},{"localized_name":"useTurbo","name":"useTurbo","shape":7,"type":"BOOLEAN","widget":{"name":"useTurbo"},"link":null},{"localized_name":"turbo","name":"turbo","shape":7,"type":"BOOLEAN","widget":{"name":"turbo"},"link":null},{"localized_name":"useTextNormalization","name":"useTextNormalization","shape":7,"type":"BOOLEAN","widget":{"name":"useTextNormalization"},"link":null},{"localized_name":"textNormalization","name":"textNormalization","shape":7,"type":"BOOLEAN","widget":{"name":"textNormalization"},"link":null},{"localized_name":"useBpm","name":"useBpm","shape":7,"type":"BOOLEAN","widget":{"name":"useBpm"},"link":null},{"localized_name":"bpm","name":"bpm","shape":7,"type":"INT","widget":{"name":"bpm"},"link":null},{"localized_name":"useKeyScale","name":"useKeyScale","shape":7,"type":"BOOLEAN","widget":{"name":"useKeyScale"},"link":null},{"localized_name":"keyScale","name":"keyScale","shape":7,"type":"STRING","widget":{"name":"keyScale"},"link":null},{"localized_name":"useTimeSignature","name":"useTimeSignature","shape":7,"type":"BOOLEAN","widget":{"name":"useTimeSignature"},"link":null},{"localized_name":"timeSignature","name":"timeSignature","shape":7,"type":"INT","widget":{"name":"timeSignature"},"link":null},{"localized_name":"useVocalLanguage","name":"useVocalLanguage","shape":7,"type":"BOOLEAN","widget":{"name":"useVocalLanguage"},"link":null},{"localized_name":"vocalLanguage","name":"vocalLanguage","shape":7,"type":"COMBO","widget":{"name":"vocalLanguage"},"link":null},{"localized_name":"useCoverConditioningScale","name":"useCoverConditioningScale","shape":7,"type":"BOOLEAN","widget":{"name":"useCoverConditioningScale"},"link":null},{"localized_name":"coverConditioningScale","name":"coverConditioningScale","shape":7,"type":"FLOAT","widget":{"name":"coverConditioningScale"},"link":null},{"localized_name":"useRepaintingStart","name":"useRepaintingStart","shape":7,"type":"BOOLEAN","widget":{"name":"useRepaintingStart"},"link":null},{"localized_name":"repaintingStart","name":"repaintingStart","shape":7,"type":"FLOAT","widget":{"name":"repaintingStart"},"link":null},{"localized_name":"useRepaintingEnd","name":"useRepaintingEnd","shape":7,"type":"BOOLEAN","widget":{"name":"useRepaintingEnd"},"link":null},{"localized_name":"repaintingEnd","name":"repaintingEnd","shape":7,"type":"FLOAT","widget":{"name":"repaintingEnd"},"link":null},{"localized_name":"useXVectorOnly","name":"useXVectorOnly","shape":7,"type":"BOOLEAN","widget":{"name":"useXVectorOnly"},"link":null},{"localized_name":"xVectorOnly","name":"xVectorOnly","shape":7,"type":"BOOLEAN","widget":{"name":"xVectorOnly"},"link":null},{"localized_name":"useMaxNewTokens","name":"useMaxNewTokens","shape":7,"type":"BOOLEAN","widget":{"name":"useMaxNewTokens"},"link":null},{"localized_name":"maxNewTokens","name":"maxNewTokens","shape":7,"type":"INT","widget":{"name":"maxNewTokens"},"link":null},{"localized_name":"useTranscript","name":"useTranscript","shape":7,"type":"BOOLEAN","widget":{"name":"useTranscript"},"link":null},{"localized_name":"transcript","name":"transcript","shape":7,"type":"STRING","widget":{"name":"transcript"},"link":null}],"outputs":[{"localized_name":"settings","name":"settings","type":"RUNWAREAUDIOSETTINGS","links":[48]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"467a7a2cd9b5385c179d2ca69173f38a87b3078d","Node name for S&R":"Runware Audio Inference Settings"},"widgets_values":[false,0.6,false,0.8,false,50,false,true,false,"",false,"apg",false,"auto",false,false,false,true,false,120,false,"",false,4,false,"en",false,1,false,0,false,0,false,false,false,4096,false,""],"bgcolor":"#5345bf"},{"id":39,"type":"Runware Audio Inference Speech","pos":[200.4345703125,49.06835174560547],"size":[400,454],"flags":{},"order":0,"mode":0,"inputs":[{"localized_name":"text","name":"text","type":"STRING","widget":{"name":"text"},"link":null},{"localized_name":"useVoice","name":"useVoice","shape":7,"type":"BOOLEAN","widget":{"name":"useVoice"},"link":null},{"localized_name":"voice","name":"voice","shape":7,"type":"STRING","widget":{"name":"voice"},"link":null},{"localized_name":"useSpeed","name":"useSpeed","shape":7,"type":"BOOLEAN","widget":{"name":"useSpeed"},"link":null},{"localized_name":"speed","name":"speed","shape":7,"type":"FLOAT","widget":{"name":"speed"},"link":null},{"localized_name":"useVolume","name":"useVolume","shape":7,"type":"BOOLEAN","widget":{"name":"useVolume"},"link":null},{"localized_name":"volume","name":"volume","shape":7,"type":"FLOAT","widget":{"name":"volume"},"link":null},{"localized_name":"usePitch","name":"usePitch","shape":7,"type":"BOOLEAN","widget":{"name":"usePitch"},"link":null},{"localized_name":"pitch","name":"pitch","shape":7,"type":"FLOAT","widget":{"name":"pitch"},"link":null},{"localized_name":"useEmotion","name":"useEmotion","shape":7,"type":"BOOLEAN","widget":{"name":"useEmotion"},"link":null},{"localized_name":"emotion","name":"emotion","shape":7,"type":"COMBO","widget":{"name":"emotion"},"link":null},{"localized_name":"useTone","name":"useTone","shape":7,"type":"BOOLEAN","widget":{"name":"useTone"},"link":null},{"localized_name":"tone","name":"tone","shape":7,"type":"STRING","widget":{"name":"tone"},"link":null},{"localized_name":"useLanguage","name":"useLanguage","shape":7,"type":"BOOLEAN","widget":{"name":"useLanguage"},"link":null},{"localized_name":"language","name":"language","shape":7,"type":"COMBO","widget":{"name":"language"},"link":null}],"outputs":[{"localized_name":"speech","name":"speech","type":"RUNWARESPEECH","links":[44]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"467a7a2cd9b5385c179d2ca69173f38a87b3078d","Node name for S&R":"Runware Audio Inference Speech"},"widgets_values":["[S1] This is a medium length sentence designed to analyze pricing for Dia two 2B text to speech. It is approximately one hundred fifty characters.",false,"",false,1,false,1,false,0,false,"calm",false,"",false,"Auto"],"bgcolor":"#5345bf"}],"links":[[40,18,0,37,0,"RUNWAREAUDIOMODEL"],[42,37,0,16,0,"AUDIO"],[44,39,0,37,3,"RUNWARESPEECH"],[48,43,0,37,2,"RUNWAREAUDIOSETTINGS"]],"groups":[],"config":{},"extra":{"ds":{"scale":0.7063044548234175,"offset":[196.84311142598875,231.9941995400452]}},"version":0.4} \ No newline at end of file