diff --git a/ui/src/workflow-canvas/component/NodeMenu.vue b/ui/src/workflow-canvas/component/NodeMenu.vue
index 3ff818f6a9a..44f7863ecd5 100644
--- a/ui/src/workflow-canvas/component/NodeMenu.vue
+++ b/ui/src/workflow-canvas/component/NodeMenu.vue
@@ -28,6 +28,7 @@ const workflowComponentGroups = [
list: [
{ icon: aiChatIcon, iconClass: 'bg-primary-gradient', label: 'AI 对话', value: WorkflowNodeType.AiChat },
{ icon: aiChatIcon, iconClass: 'bg-primary-gradient', label: '意图识别', value: WorkflowNodeType.IntentNode },
+ { icon: aiChatIcon, iconClass: 'bg-primary-gradient', label: '文本转语音', value: WorkflowNodeType.TextToSpeechNode },
],
},
{
diff --git a/ui/src/workflow-canvas/icons/text-to-speech-node-icon.vue b/ui/src/workflow-canvas/icons/text-to-speech-node-icon.vue
new file mode 100644
index 00000000000..7a220814144
--- /dev/null
+++ b/ui/src/workflow-canvas/icons/text-to-speech-node-icon.vue
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/ui/src/workflow-canvas/nodes/text-to-speech-node/index.ts b/ui/src/workflow-canvas/nodes/text-to-speech-node/index.ts
new file mode 100644
index 00000000000..1cc46334c43
--- /dev/null
+++ b/ui/src/workflow-canvas/nodes/text-to-speech-node/index.ts
@@ -0,0 +1,15 @@
+import TextToSpeechNodeVue from './index.vue'
+import { WorkflowNodeModel, WorkflowNodeView } from '@/workflow-canvas/core/workflow-node'
+import { WorkflowNodeType } from '@/workflow-canvas/types.ts'
+
+class TextToSpeechNodeView extends WorkflowNodeView {
+ constructor(props: ConstructorParameters[0]) {
+ super(props, TextToSpeechNodeVue)
+ }
+}
+
+export default {
+ type: WorkflowNodeType.TextToSpeechNode,
+ model: WorkflowNodeModel,
+ view: TextToSpeechNodeView,
+}
diff --git a/ui/src/workflow-canvas/nodes/text-to-speech-node/index.vue b/ui/src/workflow-canvas/nodes/text-to-speech-node/index.vue
new file mode 100644
index 00000000000..34f91b98eeb
--- /dev/null
+++ b/ui/src/workflow-canvas/nodes/text-to-speech-node/index.vue
@@ -0,0 +1,126 @@
+
+
+
+
+ 节点设置
+
+
+
+
+ 语音合成模型
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+