




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
基于樹莓派的“魔鏡”錯誤!未找到引用源。。if(this.displaySeconds){ html=_now.format(this._timeFormat+':mm').replace(/./g,'<spanclass="digit">$&</span>')+ '<spanclass="sec">'+_now.format('ss').replace(/./g,'<spanclass="digit">$&</span>')+'</span>'; if(typeofervalId=='undefined'){ ervalId=setInterval(function(){ this.updateTime(); }.bind(this),this.updateInterval); }如果不顯示秒數且定義了intervalId,則使用clearInterval()方法取消由setInterval()設置的timeout。將intervalId設置為undefined。else{ html=_now.format(this._timeFormat+':mm').replace(/./g,'<spanclass="digit">$&</span>'); if(ervalId){ clearInterval(ervalId); ervalId=undefined; } seconds=60-(newDate()).getSeconds(); setTimeout(function(){ this.updateTime(); }.bind(this),seconds*1000); }判斷數字是否是淺入淺出的模式,搜索每個數字類。fadeTo()方法將被選元素的不透明度逐漸地改變為指定的值。{ $('.fade').fadeTo(400,0.25,function(){ if(typeofdiff!='undefined'){ $(this.timeLocation).html(diff.html()); diff=undefined; } $('.fade').fadeTo(400,1).removeClass('fade'); }.bind(this)); }5.2溫度天氣風力模塊本模塊顯示了風力大小,當天日落時間,即時天氣和溫度。使用CSS進行布局,將模塊放在界面的右上角,動態顯示。圖5-2溫度天氣風力流程圖Fig.5-2Thediagramistheprocessoftemperature,weatherandwind具體實現:定義weather對象,對象屬性是name:value對。varweather={ lang:config.lang||'nl', params:config.weather.params||null, iconTable:{ '01d':'wi-day-sunny', '02d':'wi-day-cloudy', '03d':'wi-cloudy', '04d':'wi-cloudy-windy', '09d':'wi-showers', '10d':'wi-rain', '11d':'wi-thunderstorm', '13d':'wi-snow', '50d':'wi-fog', '01n':'wi-night-clear', '02n':'wi-night-cloudy', '03n':'wi-night-cloudy', '04n':'wi-night-cloudy', '09n':'wi-night-showers', '10n':'wi-night-rain', '11n':'wi-night-thunderstorm', '13n':'wi-night-snow', '50n':'wi-night-alt-cloudy-windy' }, temperatureLocation:'.temp', windSunLocation:'.windsun', forecastLocation:'.forecast', apiVersion:'2.5', apiBase:'/data/', weatherEndpoint:'weather', forecastEndpoint:'forecast/daily', updateInterval:erval||6000, fadeInterval:config.weather.fadeInterval||1000, intervalId:null, orientation:config.weather.orientation||'vertical',}設置浮點數舍入小數點最后一位weather.roundValue=function(temperature){ returnparseFloat(temperature).toFixed(1);}以每小時公里數為單位的風速,風速轉換為相應的Beaufort數weather.ms2Beaufort=function(ms){ varkmh=ms*60*60/1000; varspeeds=[1,5,11,19,28,38,49,61,74,88,102,117,1000]; for(varbeaufortinspeeds){ varspeed=speeds[beaufort]; if(speed>kmh){ returnbeaufort; } } return12;}OpenweathermapAPI接口{ type:'GET', url:weather.apiBase+'/'+weather.apiVersion+'/'+weather.weatherEndpoint, dataType:'json', data:weather.params, success:function(data){}}5.3問候語模塊本模塊按3個時間段顯示9條問候語,每個時間段隨機3條,30秒更換一次,問候語可以在config.js中進行設置。使用CSS進行布局,將模塊放在界面的中下方,動態顯示。具體實現:圖5-3問候語流程圖Fig.5-3Thediagramistheprocessofcompliments 創建一個comliments的對象,對象屬性是name:value對。varcompliments={ complimentLocation:'.compliment', currentCompliment:'', complimentList:{ 'morning':pliments.morning, 'afternoon':pliments.afternoon, 'evening':pliments.evening }, updateInterval:erval||30000, fadeInterval:pliments.fadeInterval||4000, intervalId:null};主體函數中創建一個_list數組,才if語句中使用slice()方法,compliments數組按值復制,這樣保持原來的數組不會改變。3到12點為早上,12到17點為下午,17點到3點為晚上。利用Object.keys().forEach遍歷對象數組。再使用concat進行連接。var_list=[]; varhour=moment().hour(); if(hour>=3&&hour<12){ _list=plimentList['morning'].slice(); }elseif(hour>=12&&hour<17){ _list=plimentList['afternoon'].slice(); }elseif(hour>=17||hour<3){ _list=plimentList['evening'].slice(); }else{ Object.keys(plimentList).forEach(function(_curr){ _list=_list.concat(plimentList[_curr]).slice(); }); } var_spliceIndex=_list.indexOf(compliments.currentCompliment); if(_spliceIndex!==-1){ _list.splice(_spliceIndex,1); } var_randomIndex=Math.floor(Math.random()*_list.length); compliments.currentCompliment=_list[_randomIndex]; $('.compliment').updateWithText(compliments.currentCompliment,compliments.fadeInterval);5.4語音交互模塊圖5-4語音交互流程圖Fig.5-4Thediagramistheprocessofvoiceinteraction系統運行原理及核心代碼: 首先運行demo.py文件,使用snowboydecoder離線的語音喚醒平臺,將自己訓練好的識別模型作為運行參數給demo.py文件。導入所需的模塊。importsnowboydecoderimportsysimportsignalimportosfromroobt_talkimportroobt_talk主要喚醒函數wake_up(),函數調用own_talk()函數,其中own_talk()又調用wake_up()函數,這樣實現了循環監聽喚醒詞,一旦喚醒詞匹配,就可以進行語音交互。defown_talk():snowboydecoder.play_audio_file()snowboydecoder.play_audio_file()detector.terminate()roobt_talk()wake_up()defwake_up():globaldetectormodel='/home/pi/rpi/mojing.pmdl'signal.signal(signal.SIGINT,signal_handler)detector=snowboydecoder.HotwordDetector(model,sensitivity=0.5)print('Listening...PressCtrl+Ctoexit')detector.start(detected_callback=own_talk,#snowboydecoder.play_audio_file,interrupt_check=interrupt_callback,sleep_time=0.03)detector.terminate()交互過程中,首先語音文件傳輸到百度語音識別平臺,識別成字符轉保存為txt格式文本,再傳遞給圖靈機器人平臺進行文字識別,圖靈機器人予以回復文字,百度語音合成平臺對字符串進行編碼解碼,合成wav音頻文件進行輸出。主要函數:fetch_token()用來身份驗證yuyingshibie()語音識別signal_handler()信號傳遞interrupt_callback()中斷回調own_talk()語音交互wake_up()語音喚醒save_wave_file()數據保存為文件roobt_talk()圖靈機器人交互tuling_reply()圖靈機器人的回復5.5本章小結 HTML,CSS,JavaScript等技術的使用為魔鏡系統前端界面的簡易性,可用性,交互性,友好性奠定了基礎。單代碼種類繁多往往會導致代碼的冗余,降低了系統的擴展性和適應性。本節魔鏡系統的軟件設計采用了Web前端分層的開發模式,將網頁分為三層,結構層、表示層以及行為層。結構層由HTML創建,主要功能是負責頁面內容的劃分;表示層由CSS來實現,主要負責結構層內容的顯示樣式;行為層由JS創建,主要負責網頁的內容交互以及動態效果顯示。Web前端分層開發模式不僅給系統提供了一個清晰嚴謹的結構,而且增加了代碼的復用性,為后期系統的維護與擴展提供了便利的條件。6系統實現6.1樹莓派系統的安裝及配置(1)/downloads/下載Raspbian版本的操作系統,將MicroSD卡插入讀卡器中,此處推薦使用USB3.0的讀卡器以及USB口,MicroSD卡推薦使用SanDiskC10的高速卡,16G內存以上,保證系統運行的速度。打開SDCardFormatterv5_WinEN工具將MicroSD卡格式化。打開win32diskimager-v0.9-binary,選擇MicroSD卡和下載的img鏡像進行燒錄。(2)將MicroSD卡插入樹莓派中,接好鼠標,鍵盤顯示器,進行開機,選擇中文系統,連接WIFI并升級系統。sudoapt-getupdatesudoapt-getupgrade(3)設置root和pi賬戶的密碼sudopasswdrootsudopasswdpi(4)執行ifconfig命令,記下ip地址(5)開啟ssh服務,方便在筆記本上進行連接(linux下使用sshpi@ip地址,win下使 用putty進行連接)sudoservicesshstart(6)設置ssh開機自啟動編輯/etc/rc.local文件,即執行sudonano/etc/rc.local,將servicesshdstart放在exit0之前,crtl+o進行保存,ctrl+x離開編輯器(7)安裝中文輸入法sudoapt-getinstallscim-pinyin(8)在樹梅派boot分區中編輯config配置文件,加入兩行代碼。sudonano/boot/config將屏幕旋轉90度(display_rotate=1)支持HDMI熱拔插(hdmi_force_hotpug=1)(9)安裝ftp工具,方便筆記本和樹梅派之間的文件傳送。sudoapt-getinstallvsftpd并啟動ftp服務sudoservicevsftpdstart6.2智能魔鏡的顯示界面環境配置(1)修改vsftpd配置文件pam_service_name=vsftpdrsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pemrsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.keyssl_enable=NOlisten=NOlisten_ipv6=YESanonymous_enable=NOlocal_enable=YES write_enable=YESlocal_umask=000dirmessage_enable=YESuse_localtime=YESconnect_from_port_20=YESsecure_chroot_dir=/var/run/vsftpd/emptylocal_root=/var/www/html(2)設置文件夾權限sudochmod-R777/var/www/html(3)配置服務器安裝Apachce:sudoapt-getinstallapache2sudoapt-getinstallapache2-docsudoapt-getinstallapache2-utils安裝php:sudoapt-getinstallphp7.0sudoapt-getinstalllibapache2-mod-php7.0php-pearphp-cache-lite建立一個PHP網頁sudovim/var/www/html/index.php輸入以下內容<html><?phpPhpinfo();?></html>保存后在瀏覽器中輸入并回車,出現以下界面即為成功(4)設置Chromiume的開機自啟,全屏運行并指向特定頁面在/home/pi/.config目錄里創建一個auto_start文件夾mkdir/home/pi/.config/auto_start/在/home/pi/.config/autostart目錄里創建并編輯myexec.desktop文件vim/home/pi/.config/auto_start/myexec.desktop輸入以下內容[DesktopEntry]Type=ApplicationExec=chromium-browser--disable-popup-blocking--no-first-run --disable-desktop-notifications--kioskvim編輯器:wq鍵是寫入文件(保存文件)并退出。在Chromium瀏覽器中設置開啟瀏覽器是打開指定頁為:http://localhost將鼠標不移動時自動隱藏光標sudoapt-getinstallx11-xserver-utilsunclutter(5)禁用屏保sudovim/etc/lightdm/lightdm.conf找到#xserver-command=X 取消#注釋改成xserver-command=X-s0dpms(6)使用filezilla工具將代碼傳送到到樹梅派的/var/www/html目錄下filezilla工具的使用方法:地址就是你的樹莓派ip地址,用戶名是你樹莓派登 陸用戶名,密碼是你樹莓派登陸密碼,端口是默認端口:216.3智能魔鏡的語音交互環境配置樹莓派語音環境配置安裝pipwgethttps://bootstrap.pypa.io/get-pip.pysudopython3get-pip.py安裝pydubsudopip3pydub安裝python3-pyaudiosudoapt-getinstallpython3-pyaudiosudoapt-getinstallpython-pyaudiosudoapt-getinstalllibatlas-base-dev運行語音系統(在rpi目錄下)sudopythondemo.pymojing.pmdl設置語音系統開機自啟動cd/etc/init.d/sudonanoautorun.sh在文件中輸入一下內容#!/bin/bashcd/home/pi/rpisudopythondemo.pymojing.pmdl保存退出。執行sudochmoda+x/etc/init.d/autorun.shsudoapt-getinstallchkconfigsudochkconfig--addautorun.shsudochkconfigautorun.shon下載編譯swigsudowget/swig/swig-3.0.10.tar.gzsudotar-xvzfswig-3.0.10.tar.gzcdswig-3.0.10/./configure--prefix=/usrsudomakesudomakeinstallsudoinstall-v-m755-d/usr/share/doc/swig-3.0.10sudocp-v-RDoc/*/usr/share/doc/swig-3.0.10cd..編譯安裝snowboysudogitclone/Kitt-AI/snowboycdsnowboy/swig/Python3sudomake打開/snowboy/snowboy/examples/Python3/snowboydecoder.py,修改from.importsnowboydetec改為importsnowboydetec,復制所需文件到自己的工程目錄。6.4智能魔鏡的展示 智能魔鏡實物內部硬件連接圖,如圖6-1圖6-1魔鏡實物內部連線圖Fig.6-1ThediagramistheMirrorinternalconnection 智能魔鏡語音系統手動運行識別如圖6-2:圖6-2魔鏡語音系統截圖Fig.6-2Th
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 人教鄂教版 (2017)五年級上冊12 光的傳播教案
- 探索農學新視角
- 八年級歷史上冊 第二單元 近代化的早期探索與民族危機的加劇 第5課 甲午中日戰爭與“瓜分”中國狂潮教學設計 新人教版
- 土木工程制圖(第5版)課件:點、直線、平面和平面曲線的多面正投影(二)
- 城鎮排水設施完善工程可行性研究報告(參考模板)
- 開發房地產協議書二零二五年
- 2025年化學交聯劑合作協議書
- 二零二五在建工程抵押擔保合同書范例
- 辦公場地房屋租賃合同二零二五年
- 二零二五版個人門面房出租簡單的合同書
- FZ/T 01008-2008涂層織物耐熱空氣老化性的測定
- 2021年5月北京地區成人本科學士學位英語統一考試真題及答案
- 國防科技大學介紹
- 防腐木施工合同樣本(3篇)
- 感染性休克病人麻醉處理課件
- 李清照永遇樂落日熔金講課教案課件
- 國開電大操作系統 Linux系統使用 實驗報告
- 第四講大學生就業權益及其法律保障課件
- 大學電子密碼鎖設計畢業論文
- 硅膠檢測報告
- 社區日間照料中心運營方案
評論
0/150
提交評論