diff --git a/boards/default_src/micropython/blocks/ai_local.js b/boards/default_src/micropython/blocks/ai_local.js index 6ebcaf22..820b7750 100644 --- a/boards/default_src/micropython/blocks/ai_local.js +++ b/boards/default_src/micropython/blocks/ai_local.js @@ -45,7 +45,29 @@ export const CI130X_OPEN_AND_CLOSE = { this.setInputsInline(true); } } - +export const CI130X_PLAY_SYSTEM_CMD_SANT = { + init: function () { + this.setColour(AI_LOCAL_VOICE_HUE); + this.appendDummyInput() + .appendField(Blockly.Msg.MIXLY_AipSpeech_synthesis); + this.appendValueInput('text') + .appendField(Blockly.Msg.MIXLY_TEXT); + this.appendDummyInput() + .appendField(Blockly.Msg.MIXLY_SPEED) + .appendField(new Blockly.FieldDropdown([ + ['0', '0'], + ['1', '1'], + ['2', '2'], + ['3', '3'], + ['4', '4'], + ['5', '5'] + ]), 'speed'); + this.setInputsInline(true); + this.setPreviousStatement(true); + this.setNextStatement(true); + this.setTooltip(Blockly.Msg.MIXLY_AipSpeech_synthesis_SANT_TOOLTIP); + } +}; export const CI130X_IDENTIFY_AND_SAVE_SANT = { init: function () { this.setColour(AI_LOCAL_VOICE_HUE); diff --git a/boards/default_src/micropython/generators/ai_local.js b/boards/default_src/micropython/generators/ai_local.js index 04c9dbe4..c1194120 100644 --- a/boards/default_src/micropython/generators/ai_local.js +++ b/boards/default_src/micropython/generators/ai_local.js @@ -127,6 +127,17 @@ export const CI130X_BROADCAST_SYSTEM_TIME = function (_, generator) { return code; } +export const CI130X_PLAY_SYSTEM_CMD_SANT = function (_, generator) { + var version = Boards.getSelectedBoardKey().split(':')[2]; + if(version == 'mixgo_sant'){ + generator.definitions_['import_sant_tts'] = 'import sant_tts'; + var text = generator.valueToCode(this, 'text', generator.ORDER_ATOMIC) || '"你们,米思齐"'; + var speed = this.getFieldValue('speed') || '3'; + var code = 'sant_tts.play(' + text + ', speed=' + speed + ')\n'; + } + return code; +} + //graph part export const CREATE_CAMERA = function (_, generator) { var version = Boards.getSelectedBoardKey().split(':')[2]; diff --git a/boards/default_src/micropython_esp32s3/template.xml b/boards/default_src/micropython_esp32s3/template.xml index ad8bf819..0685c351 100644 --- a/boards/default_src/micropython_esp32s3/template.xml +++ b/boards/default_src/micropython_esp32s3/template.xml @@ -2482,6 +2482,14 @@ + + + + 你们,米思齐 + + + 3 + diff --git a/common/msg/blockly/en.js b/common/msg/blockly/en.js index 85e5b0cf..70499081 100644 --- a/common/msg/blockly/en.js +++ b/common/msg/blockly/en.js @@ -1076,6 +1076,7 @@ En.MIXLY_MATRIX_NAME = 'Matrix Name'; En.MIXLY_MAX7219_INIT_NUM = 'Num'; En.MIXLY_MAX7219_PUTSTR = 'Show'; En.MIXLY_SPEED = 'Speed'; +En.MIXLY_TEXT = 'Text'; En.MIXLY_BRIGHTNESS = 'Brightness'; En.MIXLY_MAX7219_BRIGHTNESS_TOOLTIP = '' En.MIXLY_MAX7219_LEDARRAY = 'LED Array'; @@ -2534,6 +2535,7 @@ En.MIXLY_AipSpeech_synthesis = 'speech synthesis'; En.MIXLY_AIP_ATTR = 'Attribute'; En.MIXLY_AIP_FUNC = 'Function'; En.MIXLY_AipSpeech_synthesis_TOOLTIP = 'synthesizes a paragraph of text into speech. The attribute is a dictionary that defaults to empty, including SPD (Speed, 0-9, 5), pit (Tone, 0-9, 5), Vol (Vol, 0-15, 5), per (Pronouncer, 0 is female, 1 is male)'; +En.MIXLY_AipSpeech_synthesis_SANT_TOOLTIP = 'Synthesizes text into speech. text is the content to be synthesized'; En.MIXLY_AipImageClassify_advancedGeneral = 'Universal Object'; En.MIXLY_AipImageClassify_dishDetect = 'Vegetable Recognition'; En.MIXLY_AipImageClassify_carDetect = 'Vehicle Recognition'; diff --git a/common/msg/blockly/zh-hans.js b/common/msg/blockly/zh-hans.js index 7054af2c..50af2e11 100644 --- a/common/msg/blockly/zh-hans.js +++ b/common/msg/blockly/zh-hans.js @@ -1088,6 +1088,7 @@ ZhHans.MIXLY_MATRIX_NAME = '点阵名称'; ZhHans.MIXLY_MAX7219_INIT_NUM = '点阵模块数量'; ZhHans.MIXLY_MAX7219_PUTSTR = '点阵屏幕滚动显示'; ZhHans.MIXLY_SPEED = '速度'; +ZhHans.MIXLY_TEXT = '文本'; ZhHans.MIXLY_BRIGHTNESS = '亮度'; ZhHans.MIXLY_MAX7219_BRIGHTNESS_TOOLTIP = '亮度范围0~15' ZhHans.MIXLY_MAX7219_LEDARRAY = '图案变量'; @@ -2555,6 +2556,7 @@ ZhHans.MIXLY_AipSpeech_synthesis = '语音合成'; ZhHans.MIXLY_AIP_ATTR = '属性'; ZhHans.MIXLY_AIP_FUNC = '功能'; ZhHans.MIXLY_AipSpeech_synthesis_TOOLTIP = '将一段文字合成为语音。属性为一个默认为空的字典,包括spd(语速,取值为0~9,默认为5)、pit(音调,取值为0~9,默认为5)、vol(音量,取值为0~15,默认为5)、per(发音人,0为女声,1为男声)'; +ZhHans.MIXLY_AipSpeech_synthesis_SANT_TOOLTIP = '将一段文字合成为语音'; ZhHans.MIXLY_AipImageClassify_advancedGeneral = '通用物体'; ZhHans.MIXLY_AipImageClassify_dishDetect = '菜品识别'; ZhHans.MIXLY_AipImageClassify_carDetect = '车辆识别'; @@ -4290,4 +4292,5 @@ ZhHans.MIXLY_SOUND_VOLUME_ADD_TOOLTIP='增加音量'; ZhHans.MIXLY_SOUND_EFFECT_SET_TOOLTIP='将音效设为'; ZhHans.MIXLY_SOUND_EFFECT_CLEAR_TOOLTIP='清除音效'; ZhHans.MIXLY_SOUND_EFFECT_ADD_TOOLTIP='将音效增加'; + })(); \ No newline at end of file diff --git a/common/msg/blockly/zh-hant.js b/common/msg/blockly/zh-hant.js index d070dbae..0578dbe5 100644 --- a/common/msg/blockly/zh-hant.js +++ b/common/msg/blockly/zh-hant.js @@ -1087,6 +1087,7 @@ ZhHant.MIXLY_MATRIX_NAME = '點陣名稱'; ZhHant.MIXLY_MAX7219_INIT_NUM = '點陣模組數量'; ZhHant.MIXLY_MAX7219_PUTSTR = '點陣屏幕滾動顯示'; ZhHant.MIXLY_SPEED = '速度'; +ZhHant.MIXLY_TEXT = '文本'; ZhHant.MIXLY_BRIGHTNESS = '亮度'; ZhHant.MIXLY_MAX7219_BRIGHTNESS_TOOLTIP = '亮度範圍0~15' ZhHant.MIXLY_MAX7219_LEDARRAY = '圖案變量'; @@ -2555,6 +2556,7 @@ ZhHant.MIXLY_AipSpeech_synthesis = '語音合成'; ZhHant.MIXLY_AIP_ATTR = '屬性'; ZhHant.MIXLY_AIP_FUNC = '功能'; ZhHant.MIXLY_AipSpeech_synthesis_TOOLTIP = '將一段文字合成為語音。屬性為一個默認為空的字典,包括spd(語速,取值為0~9,默認為5)、pit(音調,取值為0~9,默認為5)、vol(音量,取值為0~15,默認為5)、per(發音人,0為女聲,1為男聲)'; +ZhHant.MIXLY_AipSpeech_synthesis_SANT_TOOLTIP = '將一段文字合成為語音'; ZhHant.MIXLY_AipImageClassify_advancedGeneral = '通用物體'; ZhHant.MIXLY_AipImageClassify_dishDetect = '菜品識別'; ZhHant.MIXLY_AipImageClassify_carDetect = '車輛識別';