Bläddra i källkod

波纹添加到虚拟实验室

丸子 3 månader sedan
förälder
incheckning
d7ef6968e7

+ 0 - 0
src/components/ai/voice/LiveWaveform .vue → src/components/ai/voice/LiveWaveform.vue


+ 2 - 2
src/components/ai/voice/VoiceInput.vue

@@ -10,7 +10,7 @@
       <!-- 显示倒计时(仅录音时显示) -->
       <span v-if="isRecording" class="countdown-text">{{ countdown }}s</span>
       <div class="waveform-container" v-if="isRecording">
-        <LiveWaveform 
+        <LiveWaveform
           :active="isRecording" 
           :processing="false"
           :height="25"
@@ -29,7 +29,7 @@
 import { ref, onMounted, onUnmounted } from 'vue'
 import { Microphone, Mute } from '@element-plus/icons-vue'
 import { ElMessage } from 'element-plus'
-import LiveWaveform from './LiveWaveform .vue'
+import LiveWaveform from './LiveWaveform.vue'
 
 // 定义props
 const props = defineProps({

+ 28 - 11
src/views/blockly/Blockly.vue

@@ -12,14 +12,16 @@
     <!-- 收音状态显示区域 - 添加这段代码 -->
     <div v-if="isRecording" class="recording-status-container">
       <div class="recording-text">正在收音...</div>
-      <div class="equalizer">
-        <div class="bar bar-1"></div>
-        <div class="bar bar-2"></div>
-        <div class="bar bar-3"></div>
-        <div class="bar bar-4"></div> 
-        <div class="bar bar-5"></div>
-        <div class="bar bar-6"></div>
-        <div class="bar bar-7"></div>
+      <div class="waveform-container">
+        <LiveWaveform
+          :active="isRecording" 
+          :processing="false"
+          :height="50"
+          :barWidth="3"
+          :barGap="1"
+          :barRadius="1"
+          :sensitivity="1.2"
+        />
       </div>
       <div v-if="recordingCountdown <= 5" class="recording-countdown">{{ recordingCountdown }}秒</div>
     </div>
@@ -215,6 +217,8 @@ import { globalState } from "@/utils/globalState.js";
 //音乐
 import { playMusic, stopMusic, onMusicEnded } from "@/api/blockly/music.js";
 import {ElButton} from "element-plus";
+import LiveWaveform from '../../components/ai/voice/LiveWaveform.vue';
+
 
 const router = useRouter();
 
@@ -243,8 +247,8 @@ const goBack = () => {
 // 切换灯光状态
 const toggleLight = () => {
   state.lamp.isLightOn = true;
-  generateCode('javascript');
-  runCode();
+    generateCode('javascript');
+    runCode();
 };
 
 // 添加开始录音状态函数
@@ -450,6 +454,8 @@ const aiService = {
   console.log("语音识别开始");
     // 前端语音采集
     const recognitionResult = await this.captureVoice(language, promptText);
+    console.log("-============-1-",recognitionResult);
+    
     return recognitionResult || "";
   }, '语音识别失败'),
 
@@ -911,7 +917,9 @@ onMounted(() => {
   const routeState = window.history.state || {};
   device.value.name = routeState.name || "";
   device.value.image = routeState.image || "";
-  device.value.jsonData = routeState.jsonData || {};
+  device.value.jsonData = JSON.parse(routeState.jsonData || {});
+  console.log("----------",device.value);
+  
 
     // 注册AI语音识别积木
   Blockly.Blocks["ai_voice_input"] = {
@@ -1317,6 +1325,7 @@ const loadWorkspaceFromJson = () => {
     const json = device.value.jsonData;
     console.log(typeof json);
     Blockly.serialization.workspaces.load(json, workspace);
+    console.log("------------22jiazai:",typeof json, json);
     showStatus('工作区已成功从JSON加载!');
   } catch (error) {
     showStatus('JSON解析错误: ' + error.message, 'error');
@@ -2030,6 +2039,14 @@ textarea {
   font-weight: bold;
 }
 
+.waveform-container {
+  margin: 10px 0;
+  width: 100%;
+  max-width: 200px;
+  margin-left: auto;
+  margin-right: auto;
+}
+
 .equalizer {
   display: flex;
   justify-content: center;

+ 22 - 11
src/views/blockly/Blockly2.vue

@@ -12,14 +12,16 @@
     <!-- 收音状态显示区域 -->
     <div v-if="isRecording" class="recording-status-container">
       <div class="recording-text">正在收音...</div>
-      <div class="equalizer">
-        <div class="bar bar-1"></div>
-        <div class="bar bar-2"></div>
-        <div class="bar bar-3"></div>
-        <div class="bar bar-4"></div>
-        <div class="bar bar-5"></div>
-        <div class="bar bar-6"></div>
-        <div class="bar bar-7"></div>
+      <div class="waveform-container">
+        <LiveWaveform
+          :active="isRecording" 
+          :processing="false"
+          :height="50"
+          :barWidth="3"
+          :barGap="1"
+          :barRadius="1"
+          :sensitivity="1.2"
+        />
       </div>
       <div v-if="recordingCountdown <= 5" class="recording-countdown">{{ recordingCountdown }}秒</div>
     </div>
@@ -233,6 +235,8 @@ import lightClose from '@/assets/images/smart-home/light-close.png' // 灯光关
 import television from '@/assets/images/smart-home/television.png' // 电视画面
 import curtainFront from '@/assets/images/smart-home/curtain-front.png' // 前面窗帘遮挡
 
+import LiveWaveform from '../../components/ai/voice/LiveWaveform.vue';
+
 const router = useRouter();
 
 // 设备信息
@@ -259,8 +263,8 @@ const goBack = () => {
 };
 
 const executeCode = () => {
-  generateCode('javascript');
-  runCode();
+    generateCode('javascript');
+    runCode();
 };
 
 
@@ -1032,7 +1036,7 @@ onMounted(() => {
   const routeState = window.history.state || {};
   device.value.name = routeState.name || "";
   device.value.image = routeState.image || "";
-  device.value.jsonData = routeState.jsonData || {};
+  device.value.jsonData = JSON.parse(routeState.jsonData || {});
 
   // 注册AI语音识别积木
   Blockly.Blocks["ai_voice_input"] = {
@@ -2361,6 +2365,13 @@ textarea {
   margin-top: 15px;
   font-weight: bold;
 }
+.waveform-container {
+  margin: 10px 0;
+  width: 100%;
+  max-width: 200px;
+  margin-left: auto;
+  margin-right: auto;
+}
 
 .equalizer {
   display: flex;