mini增加云端智能-语音交互

This commit is contained in:
Irene-Maxine
2025-10-14 14:20:52 +08:00
parent e088cdcafb
commit 027a40d3a0
9 changed files with 319 additions and 3 deletions

View File

@@ -0,0 +1,108 @@
import * as Blockly from 'blockly/core';
import { Variables } from '../../python/export';
const AI_CLOUD_VOICE_HUE = '#88ada6';
export const init_xunfei_vi = {
init: function () {
this.setColour(AI_CLOUD_VOICE_HUE);
this.appendValueInput('VAR')
.appendField(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE);
this.appendDummyInput()
.appendField(Blockly.Msg.MIXLY_SETUP + Blockly.Msg.MIXLY_AS + Blockly.Msg.MIXLY_XUFEI + Blockly.Msg.MIXLY_AipSpeech_asr );
this.appendValueInput('APPID')
.setCheck(String)
.appendField('APPID');
this.appendValueInput('APISecret')
.setCheck(String)
.appendField('APISecret');
this.appendValueInput('APIKey')
.setCheck(String)
.appendField('APIKey');
this.setInputsInline(false);
this.setPreviousStatement(true);
this.setNextStatement(true);
}
};
export const init_xunfei_Spark_Ultra = {
init: function () {
this.setColour(AI_CLOUD_VOICE_HUE);
this.appendValueInput('VAR')
.appendField(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE);
this.appendDummyInput()
.appendField(Blockly.Msg.MIXLY_SETUP + Blockly.Msg.MIXLY_AS + Blockly.Msg.MIXLY_XUFEI + 'Spark Ultra' +Blockly.Msg.MIXLY_LARGE_LANGUAGE_MODEL );
this.appendValueInput('APPID')
.setCheck(String)
.appendField('APPID');
this.appendValueInput('APISecret')
.setCheck(String)
.appendField('APISecret');
this.appendValueInput('APIKey')
.setCheck(String)
.appendField('APIKey');
this.setInputsInline(false);
this.setPreviousStatement(true);
this.setNextStatement(true);
}
};
export const init_xunfei_vi_run = {
init: function () {
this.setColour(AI_CLOUD_VOICE_HUE);
this.appendValueInput('VAR')
this.appendDummyInput()
.appendField(Blockly.Msg.MIXLY_RUN + Blockly.Msg.MIXLY_AipSpeech_asr);
this.appendValueInput('time')
.setCheck(Number);
this.appendDummyInput()
.appendField(Blockly.Msg.MIXPY_AI_AUDIO_TIME);
this.setInputsInline(true);
this.setOutput(true);
this.setTooltip(Blockly.Msg.init_xunfei_vi_op_tooltip);
}
};
export const init_xunfei_Spark_Ultra_run = {
init: function () {
this.setColour(AI_CLOUD_VOICE_HUE);
this.appendValueInput('VAR')
this.appendDummyInput()
.appendField(Blockly.Msg.MIXLY_RUN + Blockly.Msg.MIXLY_LARGE_LANGUAGE_MODEL);
this.appendValueInput('qus')
.setCheck(String)
.appendField(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_SEND);
this.setInputsInline(true);
this.setOutput(true);
this.setTooltip(Blockly.Msg.init_xunfei_vi_run_tooltip);
}
};
export const init_xunfei_Spark_Ultra_clr_his = {
init: function () {
this.setColour(AI_CLOUD_VOICE_HUE);
this.appendValueInput('VAR')
this.appendDummyInput()
.appendField(Blockly.Msg.MIXLY_RUN + Blockly.Msg.MIXLY_LARGE_LANGUAGE_MODEL + Blockly.Msg.MIXLY_EMPTY_HISTORY);
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
}
};
export const llm_set_callback = {
init: function () {
this.setColour(AI_CLOUD_VOICE_HUE);
this.appendValueInput('VAR1')
.appendField(Blockly.Msg.MIXLY_LARGE_LANGUAGE_MODEL)
this.appendValueInput('callback')
.appendField(Blockly.Msg.MIXLY_PYTHON_CONTROLS_THREAD_USE)
this.appendValueInput('VAR')
.appendField(Blockly.Msg.MIXLY_PARAMS);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setInputsInline(true);
this.setTooltip(Blockly.Msg.llm_set_callback_tooltip);
}
};

View File

@@ -4,6 +4,7 @@ import * as MicroPythonActuatorBlocks from './blocks/actuator';
import * as MicroPythonAISensorBlocks from './blocks/ai_sensor';
import * as MicroPythonAIBlocks from './blocks/ai';
import * as MicroPythonAILocalBlocks from './blocks/ai_local';
import * as MicroPythonAICloudBlocks from './blocks/ai_cloud';
import * as MicroPythonBlynkBlocks from './blocks/blynk';
import * as MicroPythonCCG1Blocks from './blocks/cc_g1';
import * as MicroPythonCEGOBlocks from './blocks/ce_go';
@@ -32,6 +33,7 @@ import * as MicroPythonActuatorGenerators from './generators/actuator';
import * as MicroPythonAISensorGenerators from './generators/ai_sensor';
import * as MicroPythonAILocalGenerators from './generators/ai_local';
import * as MicroPythonAIGenerators from './generators/ai';
import * as MicroPythonAICloudGenerators from './generators/ai_cloud';
import * as MicroPythonBlynkGenerators from './generators/blynk';
import * as MicroPythonCCG1Generators from './generators/cc_g1';
import * as MicroPythonCEGOGenerators from './generators/ce_go';
@@ -67,6 +69,7 @@ export {
MicroPythonAISensorBlocks,
MicroPythonAIBlocks,
MicroPythonAILocalBlocks,
MicroPythonAICloudBlocks,
MicroPythonBlynkBlocks,
MicroPythonCCG1Blocks,
MicroPythonCEGOBlocks,
@@ -94,6 +97,7 @@ export {
MicroPythonAISensorGenerators,
MicroPythonAIGenerators,
MicroPythonAILocalGenerators,
MicroPythonAICloudGenerators,
MicroPythonBlynkGenerators,
MicroPythonCCG1Generators,
MicroPythonCEGOGenerators,

View File

@@ -0,0 +1,48 @@
import { Boards } from 'mixly';
export const init_xunfei_vi = function (_, generator) {
generator.definitions_['import_mini_xunfei'] = "import mini_xunfei";
var v = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
var id = generator.valueToCode(this, 'APPID', generator.ORDER_ATOMIC);
var s = generator.valueToCode(this, 'APISecret', generator.ORDER_ATOMIC);
var key = generator.valueToCode(this, 'APIKey', generator.ORDER_ATOMIC);
var code = v + ' = mini_xunfei.ASR_WebSocket(' + id + ',' + key + ',' + s +')\n';
return code;
}
export const init_xunfei_Spark_Ultra = function (_, generator) {
generator.definitions_['import_mini_xunfei'] = "import mini_xunfei";
var v = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
var id = generator.valueToCode(this, 'APPID', generator.ORDER_ATOMIC);
var s = generator.valueToCode(this, 'APISecret', generator.ORDER_ATOMIC);
var key = generator.valueToCode(this, 'APIKey', generator.ORDER_ATOMIC);
var code = v + ' = mini_xunfei.LLM_WebSocket(' + id + ',' + key + ',' + s +')\n';
return code;
}
export const init_xunfei_vi_run = function (_, generator) {
var v = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
var t = generator.valueToCode(this, 'time', generator.ORDER_ATOMIC);
var code = v + '.run(' + t +')';
var v = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
var q = generator.valueToCode(this, 'qus', generator.ORDER_ATOMIC);
var code = v + '.run(' + q +')';
return [code,generator.ORDER_ATOMIC];
}
export const init_xunfei_Spark_Ultra_clr_his = function (_, generator) {
var v = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
var code = v + '.empty_history()\n';
return code;
}
export const llm_set_callback = function (_, generator) {
var v1 = generator.valueToCode(this, "VAR1", generator.ORDER_NONE) || "None";
var v = generator.valueToCode(this, "VAR", generator.ORDER_NONE) || "None";
var callback = generator.variableDB_.getName(
generator.valueToCode(this, "callback", generator.ORDER_NONE) || "None",
Blockly.Procedures.NAME_TYPE
);
var code = v1 +".function_call(" + callback + ", " + v + ")\n";
return code;
}