-
當(dāng)前位置:首頁 > 創(chuàng)意學(xué)院 > 技術(shù) > 專題列表 > 正文
61源碼網(wǎng)
大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關(guān)于61源碼網(wǎng)的問題,以下是小編對此問題的歸納整理,讓我們一起來看看吧。
開始之前先推薦一個(gè)非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計(jì)劃、工作報(bào)告、論文、代碼、作文、做題和對話答疑等等
只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,越精準(zhǔn),寫出的就越詳細(xì),有微信小程序端、在線網(wǎng)頁版、PC客戶端
官網(wǎng):https://ai.de1919.com。
創(chuàng)意嶺作為行業(yè)內(nèi)優(yōu)秀的企業(yè),服務(wù)客戶遍布全球各地,如需了解相關(guān)業(yè)務(wù)請撥打電話175-8598-2043,或添加微信:1454722008
本文目錄:
一、請?zhí)峁┮恍┌俣瓤臻gcss代碼的網(wǎng)站
你要查看CSS模板很簡單
查看一個(gè)空間主頁的源代碼,第75行的CSS文件前綴hi.baidu.com復(fù)制到地址欄里打開,就是css模板,復(fù)制到word里面就自動換行
二、C++做一個(gè)小游戲,有源代碼的最好,謝謝
#include <iostream>
#include<fstream>
#include <ctime>
#include <cmath>
#include <stdlib.h>
#include<stdio.h> //時(shí)間 //文件
#include <string>
#define random(x)(rand()%x)
using namespace std;
void thunder(int Dif,int Row,int Column,char *USer)
{
int r,c,alls[22][22],backstage[22][22]={0};
srand((int)time(0));
for(r=1;r<=Row;r++) // 生成alls(0~1)1是雷
{
for(c=1;c<=Column;c++)
{
if(random(6)<1) {alls[r][c]=1;} else{alls[r][c]=0;};
}
};
for(r=0;r<=Row+1;r++) //生成 backstage(正確答案)
{
for(int c=0;c<=Column+1;c++)
{
if(alls[r][c]==1)
{
(int)backstage[r][c]='*'; //將1變?yōu)?* 代表雷
}
else
{
for(int i=r-1;i<=r+1;i++) //將0變?yōu)閿?shù)字 (代表周圍雷數(shù))
for(int j=c-1;j<=c+1;j++)
{
if(alls[i][j]!=alls[r][c]&&alls[i][j]==1){backstage[r][c]++;};
}
}; //else 結(jié)束
}; // for 結(jié)束
}; // for 結(jié)束
cout<<"======================*********================================"<<endl;
char surface[22][22]; //生成surface(用戶界面)
for(r=0;r<22;r++) //全部為零
for(c=0;c<22;c++)
{
surface[r][c]='0';
}
for(r=1;r<=Row;r++) //中間化 # 形成0包圍#的形式 (通過數(shù) #-->(*||數(shù)字) 的個(gè)數(shù) 贏的時(shí)候停止循環(huán))
for(c=1;c<=Column;c++)
{
surface[r][c]='#';
}
for(r=1;r<=Row;r++) //輸出 surface 界面 便于檢查
{
for(c=1;c<=Column;c++) {cout<<" "<<surface[r][c];};
cout<<endl;
};
cout<<"請按格式輸入"<<endl
<<"前兩個(gè)數(shù)字為坐標(biāo),最后一個(gè)數(shù)字“1”表示此位置為雷,“0”則表示不是。"<<endl
<<"如:1 3 1 表示一行三列是雷;2 4 0 表示二行四列不是雷"<<endl
<<"提示:當(dāng)數(shù)字周圍雷都被掃出時(shí),可再次按要求輸入此位置,可得到周圍數(shù)字。"<<endl;
long i=10000000L; //計(jì)算時(shí)間開始
clock_t start,finish;
double duration;
start=clock();
while(i--); //計(jì)算時(shí)間開始
int num=Row*Column; //計(jì)算#號個(gè)數(shù)
while(num!=0) //控制 是否點(diǎn)完所有位置
{
int x,y,judge;
cin>>x>>y>>judge;
if(alls[x][y]!=judge)
{
cout<<"you lose!!!"<<endl;
cout<<"The answer is:"<<endl;
for(r=1;r<=Row;r++) //輸了 輸出backstage 顯示正確答案
{
for(int c=1;c<=Column;c++)
{
cout<<" "<<(char)(backstage[r][c]==42?backstage[r][c]:backstage[r][c]+'0'); //輸出backstage
}
cout<<endl;
}
break;
}
else
{
if(alls[x][y]==1) {if(surface[x][y]=='#'){num--;}surface[x][y]='@'; } // 雷 判斷正確 顯示“@”;數(shù)“#”
else
{
if(backstage[x][y]!=0) // 數(shù)字 判斷正確 顯示數(shù)字
{
if(surface[x][y]=='#'){num--; surface[x][y]=backstage[x][y]+'0'; } // 數(shù)“#”
else
{
int lei_num=0;
for(int i=x-1;i<=x+1;i++) //數(shù) 數(shù)字周圍 雷的個(gè)數(shù)
for(int j=y-1;j<=y+1;j++)
{
if(surface[i][j]=='@')
lei_num++;
}
if(backstage[x][y]==lei_num) // 看數(shù)字周圍雷是否全部掃出 提示 顯示數(shù)字周圍
{
for(int i=x-1;i<=x+1;i++)
for(int j=y-1;j<=y+1;j++)
if(surface[i][j]=='#') //數(shù)“#”
{
surface[i][j]=backstage[i][j]+'0';
num--;
}
}
}
}
else // 數(shù)字為零時(shí) 顯示零周圍的零
{
if(surface[x][y]=='#'){num--;}; //數(shù)“#”
surface[x][y]=backstage[x][y]+'0';
for(int i=x-1;i<=x+1;i++) // 顯示零周圍的數(shù)字
for(int j=y-1;j<=y+1;j++)
if(surface[i][j]=='#') // 避免 死循環(huán)
{
surface[i][j]=backstage[i][j]+'0';
num--; //數(shù)“#”
}
for(int k=0;k<20;k++) //最多20層零 (點(diǎn)出最邊上的零)
{
for (int R=1;R<=Row;R++) //檢查所有零
for(int C=1;C<=Column;C++) //再次顯示零周圍的數(shù)字
{
if(surface[R][C]=='0')
{
for(int i=R-1;i<=R+1;i++)
for(int j=C-1;j<=C+1;j++)
{
if(surface[i][j]=='#') // 避免 死循環(huán) 數(shù)“#”
{
surface[i][j]=backstage[i][j]+'0';
num--;
}
}
}
} //匹配for 內(nèi)
} //匹配 for 外
}//匹配else
}//匹配else
}//匹配els
cout<<endl;
cout<<"======================*********================================"<<endl;
for(r=1;r<=Row;r++) //輸出界面(已修改)
{
for(c=1;c<=Column;c++) {cout<<" "<<surface[r][c];};
cout<<endl;
};
} //匹配while
finish=clock(); //計(jì)算時(shí)間結(jié)束
duration=(double)(finish-start)/CLOCKS_PER_SEC; //時(shí)間變量
if(num==0) //所有
{
cout<<" You win! Congratulations!! "<<endl;
cout<<" Your time is: "<<duration<<endl;
if(Dif==1) //讀取 簡單掃雷 的存儲文件
{
string Name;
string name[6];
double Time,rang;
double times[6];
int i=0;
ifstream inf("掃雷 簡單.txt");
for(i=0;i<5;i++) //文件中信息導(dǎo)入到數(shù)組里
{
inf>>Name;inf>>rang>>Time;
name[i]=Name;
times[i]=Time;
}
inf.close();
name[5]=USer; //本輪玩家信息
times[5]=duration;
double t1=0;
string t2;
for(int j=0;j<5;j++) //冒泡排序法
{
for(i=0;i<5-j;i++)
{
if(times[i]>times[i+1])
{
t1=times[i];
times[i]=times[i+1];
times[i+1]=t1;
t2=name[i];
name[i]=name[i+1];
name[i+1]=t2;
}
}
}
ofstream outf("掃雷 簡單.txt");
for(i=0;i<5;i++) //將前五名玩家信息存儲到文件中
{
cout<<name[i]<<" "<<i+1<<" "<<times[i]<<endl;
outf<<name[i]<<" "<<i+1<<" "<<times[i]<<endl;
}
outf.close();
}
if(Dif==2) //讀取 一般掃雷 的存儲文件
{
string Name;
string name[6];
double Time,rang;
double times[6];
int i=0;
ifstream inf("掃雷 一般.txt");
for(i=0;i<5;i++) //文件中信息導(dǎo)入到數(shù)組里
{
inf>>Name;inf>>rang>>Time;
name[i]=Name;
times[i]=Time;
}
inf.close();
name[5]=USer; //本輪玩家信息
times[5]=duration;
double t1=0;
string t2;
for(int j=0;j<5;j++) //冒泡排序法
{
for(i=0;i<5-j;i++)
{
if(times[i]>times[i+1])
{
t1=times[i];
times[i]=times[i+1];
times[i+1]=t1;
t2=name[i];
name[i]=name[i+1];
name[i+1]=t2;
}
}
}
ofstream outf("掃雷 一般.txt");
for(i=0;i<5;i++) //將前五名玩家信息存儲到文件中 并輸出
{
cout<<name[i]<<" "<<i+1<<" "<<times[i]<<endl;
outf<<name[i]<<" "<<i+1<<" "<<times[i]<<endl;
}
outf.close();
}
if(Dif==3) //讀取 困難掃雷 的存儲文件
{
string Name;
string name[6];
double Time,rang;
double times[6];
int i=0;
ifstream inf("掃雷 困難.txt");
for(i=0;i<5;i++) //文件中信息導(dǎo)入到數(shù)組里
{
inf>>Name;inf>>rang>>Time;
name[i]=Name;
times[i]=Time;
}
inf.close();
name[5]=USer; //本輪玩家信息
times[5]=duration;
double t1=0;
string t2;
for(int j=0;j<5;j++) //冒泡排序法
{
for(i=0;i<5-j;i++)
{
if(times[i]>times[i+1])
{
t1=times[i];
times[i]=times[i+1];
times[i+1]=t1;
t2=name[i];
name[i]=name[i+1];
name[i+1]=t2;
}
}
}
ofstream outf("掃雷 困難.txt");
for(i=0;i<5;i++) //將前五名玩家信息存儲到文件中
{
cout<<name[i]<<" "<<i+1<<" "<<times[i]<<endl;
outf<<name[i]<<" "<<i+1<<" "<<times[i]<<endl;
}
outf.close();
}
}
}
void scale(int dif,char *User) //選擇難度
{
int row,column;
if(dif==1) {row=3;column=3;}
if(dif==2) {row=7;column=7;}
if(dif==3) {row=10;column=10;}
cout<<"The scale is: "<<row<<"*"<<column<<endl;
thunder(dif,row,column,User);
};
int main()
{
int Continue=1;
int difficulty;
char user[10];
cout<<" Welcom to the game! "<<endl
<<" 請輸入用戶名! "<<endl;
cin>>user;
while(Continue==1)
{
cout<<"=======================*******************======================="<<endl
<<" 請選擇難度! "<<endl
<<" 簡單——1 "<<endl
<<" 一般——2 "<<endl
<<" 困難——3 "<<endl;
cin>>difficulty;
scale(difficulty,user);
cout<<"繼續(xù)游戲——1 結(jié)束游戲——0"<<endl;
cin>>Continue;
}
return 0;
}
掃雷小游戲,自己編的代碼
三、凌陽61單片機(jī)的優(yōu)勢以及其在語音識別方面上的優(yōu)勢?
凌陽單片機(jī)本身具備語音識別功能,不需要外擴(kuò)語音識別模塊,雖然具有一點(diǎn)點(diǎn)DSP功能,就能做到語音識別功能。如常見的語音控制機(jī)器人,語音控制小車等。
我們所說的音頻是指頻率在20 Hz~20 kHz的聲音信號,分為:波形聲音、語音和音樂三種,其中波形聲音就是自然界中所有的聲音,是聲音數(shù)字化的基礎(chǔ)。語音也可以表示為波形聲音,但波形聲音表示不出語言、語音學(xué)的內(nèi)涵。語音是對講話聲音的一次抽象。是語言的載體,是人類社會特有的一種信息系統(tǒng),是社會交際工具的符號。音樂與語音相比更規(guī)范一些,是符號化了的聲音。但音樂不能對所有的聲音進(jìn)行符號化。樂譜是符號化聲音的符號組,表示比單個(gè)符號更復(fù)雜的聲音信息內(nèi)容。
將模擬的(連續(xù)的)聲音波形數(shù)字元化(離散化),以便利數(shù)字計(jì)算機(jī)進(jìn)行處理的過程,主要包括采樣和量化兩個(gè)方面。
數(shù)字音頻的質(zhì)量取決于:采樣頻率和量化位數(shù)這兩個(gè)重要參數(shù)。此外,聲道的數(shù)目、相應(yīng)的音頻設(shè)備也是影響音頻質(zhì)量的原因
語音壓縮編碼中的數(shù)據(jù)量是指:數(shù)據(jù)量=(采樣頻率×量化位數(shù))/8(字節(jié)數(shù)) ×聲道數(shù)目。
壓縮編碼的目的:通過對資料的壓縮,達(dá)到高效率存儲和轉(zhuǎn)換資料的結(jié)果,即在保證一定聲音質(zhì)量的條件下,以最小的資料率來表達(dá)和傳送聲音信息。
壓縮編碼的必要性:實(shí)際應(yīng)用中,未經(jīng)壓縮編碼的音頻資料量很大,進(jìn)行傳輸或存儲是不現(xiàn)實(shí)的。 所以要通過對信號趨勢的預(yù)測和冗余信息處理,進(jìn)行資料的壓縮,這樣就可以使我們用較少的資源建立更多的信息。
舉個(gè)例子,沒有壓縮過的CD品質(zhì)的資料,一分鐘的內(nèi)容需要11MB的內(nèi)存容量來存儲。如果將原始資料進(jìn)行壓縮處理,在確保聲音品質(zhì)不失真的前提下,將數(shù)據(jù)壓縮一半,5.5MB就可以完全還原效果。而在實(shí)際操作中,可以依需要來選擇合適的算法。
常見的幾種音頻壓縮編碼:
1) 波形編碼:將時(shí)間域信號直接變換為數(shù)字代碼,力圖使重建語音波形保持原語音信號的波形形狀。波形編碼的基本原理是在時(shí)間軸上對模擬語音按一定的速率抽樣,然后將幅度樣本分層量化,并用代碼表示。譯碼是其反過程,將收到的數(shù)字序列經(jīng)過譯碼和濾波恢復(fù)成模擬信號。
如:脈沖編碼調(diào)制(Pulse Code Modulation,PCM)、差分脈沖編碼調(diào)制(DPCM)、增量調(diào)制(DM)以及它們的各種改進(jìn)型,如自適應(yīng)差分脈沖編碼調(diào)制(ADPCM)、自適應(yīng)增量調(diào)制(ADM)、自適應(yīng)傳輸編碼(Adaptive Transfer Coding,ATC)和子帶編碼(SBC)等都屬于波形編碼技術(shù)。
波形編碼特點(diǎn):高話音質(zhì)量、高碼率,適于高保真音樂及語音。
2) 參數(shù)編碼:參數(shù)編碼又稱為聲源編碼,是將信源信號在頻率域或其它正交變換域提取特征參數(shù),并將其變換成數(shù)字代碼進(jìn)行傳輸。譯碼為其反過程,將收到的數(shù)字序列經(jīng)變換恢復(fù)特征參量,再根據(jù)特征參量重建語音信號。具體說,參數(shù)編碼是通過對語音信號特征參數(shù)的提取和編碼,力圖使重建語音信號具有盡可能高的準(zhǔn)確性,但重建信號的波形同原語音信號的波形可能會有相當(dāng)大的差別。
如:線性預(yù)測編碼(LPC)及其它各種改進(jìn)型都屬于參數(shù)編碼。該編碼比特率可壓縮到2Kbit/s-4.8Kbit/s,甚至更低,但語音質(zhì)量只能達(dá)到中等,特別是自然度較低。
參數(shù)編碼特點(diǎn):壓縮比大,計(jì)算量大,音質(zhì)不高,廉價(jià)!
3) 混合編碼:混合編碼使用參數(shù)編碼技術(shù)和波形編碼技術(shù),計(jì)算機(jī)的發(fā)展為語音編碼技術(shù)的研究提供了強(qiáng)有力的工具,大規(guī)模、超大規(guī)模集成電路的出現(xiàn),則為語音編碼的實(shí)現(xiàn)提供了基礎(chǔ)。80年代以來,語音編碼技術(shù)有了實(shí)質(zhì)性的進(jìn)展,產(chǎn)生了新一代的編碼算法,這就是混合編碼。它將波形編碼和參數(shù)編碼組合起來,克服了原有波形編碼和參數(shù)編碼的弱點(diǎn),結(jié)合各自的長處,力圖保持波形編碼的高質(zhì)量和參數(shù)編碼的低速率。
如:多脈沖激勵(lì)線性預(yù)測編碼(MPLPC),規(guī)劃脈沖激勵(lì)線性預(yù)測編碼(KPELPC),碼本激勵(lì)線性預(yù)測編碼(CELP)等都是屬于混合編碼技術(shù)。其數(shù)據(jù)率和音質(zhì)介于參數(shù)和波形編碼之間。
總之,音頻壓縮技術(shù)之趨勢有兩個(gè):
1)降低資料率,提高壓縮比,用于廉價(jià)、低保真場合(如:電話)。
2)追求高保真度,復(fù)雜的壓縮技術(shù)(如:CD)。
7.1.5 語音合成、辨識技術(shù)的介紹:
按照實(shí)現(xiàn)的功能來分,語音合成可分兩個(gè)檔次:
(1) 有限詞匯的計(jì)算機(jī)語音輸出
(2) 基于語音合成技術(shù)的文字語音轉(zhuǎn)換(TTS:Text-to-Speech)
按照人類語言功能的不同層次,語音合成可分為三個(gè)層次:
(1) 從文字到語音的合成(Text-to-Speech)
(2) 從概念到語音的合成(Concept-to-Speech)
(3) 從意向到語音的合成(Intention-to-Speech)
早期只能辨認(rèn)特定的使用者即特定語者(Speaker Dependent,SD)模式,使用者可針對特定語者辨認(rèn)詞匯(可由使用者自行定義,如人名聲控?fù)芴?,作簡單快速的訓(xùn)練紀(jì)錄使用者的聲音特性來加以辨認(rèn)。隨著技術(shù)的成熟,進(jìn)入語音適應(yīng)階段SA(speaker adaptation),使用者只要對于語音辨識核心,經(jīng)過一段時(shí)間的口音訓(xùn)練后,即可擁有不錯(cuò)的辨識率。
2)非特定語者模式(Speaker Independent,SI),使用者無需訓(xùn)練即可使用,并進(jìn)行辨認(rèn)。任何人皆可隨時(shí)使用此技術(shù),不限定語者即男性、女性、小孩、老人皆可。
連續(xù)語音:
1)單字音辨認(rèn):為了確保每個(gè)字音可以正確地切割出來,必須一個(gè)字一個(gè)字分開來念,非常不自然,與我們平常說話的連續(xù)方式,還是有點(diǎn)不同。
2)整個(gè)句子辨識:只要按照你正常說話的速度,直接將要表達(dá)的說出來,中間并不需要停頓,這種方式是最直接最自然的,難度也最高,現(xiàn)階段連續(xù)語音的辨識率及正確率,雖然效果還不錯(cuò)但仍需再提高。然而,中文字有太多的同音字,因此目前所有的中文語音辨識系統(tǒng),幾乎都是以詞為依據(jù),來判斷正確的同音字。
可辨認(rèn)詞匯數(shù)量:
內(nèi)建的詞匯數(shù)據(jù)庫的多寡,也直接影響其辨識能力。因此就語音辨識 的詞匯數(shù)量來說亦可分為三種:
1)小詞匯量(10-100)
2)中詞匯量(100-1000)
3)無限詞匯量(即聽寫機(jī))
壓縮分無損壓縮和有損壓縮。
無損壓縮一般指:磁盤文件,壓縮比低:2:1~4:1。
而有損壓縮則是指:音/視頻文件,壓縮比可高達(dá)100:1。
凌陽音頻壓縮算法根據(jù)不同的壓縮比分為以下幾種 (具體可參見語音壓縮工具一節(jié)內(nèi)容):
SACM-A2000:壓縮比為8:1,8:1.25,8:1.5
SACM-S480: 壓縮比為80:3,80:4.5
SACM-S240: 壓縮比為80:1.5
按音質(zhì)排序:A2000>S480>S240
凌陽的SPCE061A是16位單片機(jī),具有DSP功能,有很強(qiáng)的信息處理能力,最高時(shí)鐘頻率可達(dá)到49MHz,具備運(yùn)算速度高的優(yōu)勢等等,這些都無疑為語音的播放、錄放、合成及辨識提供了條件。
凌陽壓縮算法中SACM_A2000、SACM_S480、SACM_S240主要是用來放音,可用于語音提示,而DVR則用來錄放音。對于音樂合成MS01,該算法較繁瑣,而且需要具備音樂理論、配器法及和聲學(xué)知識,所以對于特別愛好者可以到我們的網(wǎng)站去了解相關(guān)內(nèi)容,這里只給出它的API函數(shù)介紹及程序代碼的范例,僅供參考。
在前面我們已經(jīng)介紹過語音辨識的一些相關(guān)的內(nèi)容,在這里我們給出SPCE061的特定語者辨識SD(Speaker Dependent)的一個(gè)例子以供有興趣者參考。SD即語音樣板由單個(gè)人訓(xùn)練,也只能識別訓(xùn)練某人的語音命令,而他人的命令識別率較低或幾乎不能識別。
同樣語音辨識也將其一些功能作成模塊,并通過API調(diào)用來實(shí)現(xiàn)這些功能,在這里我們?yōu)榇蠹医榻B一些常用的API函數(shù),如果有興趣者可以登陸我們的網(wǎng)站去獲得更多的相關(guān)內(nèi)容
初始化:
【API格式】C: int BSR_DeleteSDGroup(0);
ASM:F_BSR_DeleteSDGroup(0)
【功能說明】SRAM初始化。
【參 數(shù)】該參數(shù)是辨識的一個(gè)標(biāo)識符,0代表選擇SRAM,并初始化。
【返 回 值】當(dāng)SRAM擦除成功返回0,否則,返回-1。
訓(xùn)練部分:
1) 【API格式】C:int BSR_Train (int CommandID, int TraindMode);
ASM:F_BSR_Train
【功能說明】訓(xùn)練函數(shù)。
【參 數(shù)】
CommandID:命令序號,范圍從0x100到0x105,并且對于每組訓(xùn)練語句都是唯一的。
TraindMode:訓(xùn)練次數(shù),要求使用者在應(yīng)用之前訓(xùn)練一或兩遍:
BSR_TRAIN_ONCE:要求訓(xùn)練一次。
BSR_TRAIN_TWICE要求訓(xùn)練兩次。
【返 回 值】訓(xùn)練成功,返回0;沒有聲音返回-1;訓(xùn)練需要更多的語音數(shù)據(jù)來訓(xùn)練,返回-2;當(dāng)環(huán)境太吵時(shí),返回-3;當(dāng)數(shù)據(jù)庫滿,返回-4;當(dāng)兩次輸入命令不通,返回-5;當(dāng)序號超出范圍,返回-6。
【備 注】
① 在調(diào)用訓(xùn)練程序之前,確保識別器正確的初始化。
② 訓(xùn)練次數(shù)是2時(shí),則兩次一定會有差異,所以一定要保證兩次訓(xùn)練結(jié)果接近
③ 為了增強(qiáng)可靠性,最好訓(xùn)練兩次,否則辨識的命令就會傾向于噪音
④ 調(diào)用函數(shù)后,等待2秒開始訓(xùn)練,每條命令只有1 .3秒,也就是說,當(dāng)訓(xùn)練命令超出1.3秒時(shí),只有前1.3秒命令有效。
辨識部分:
1)【API格式】C: void BSR_InitRecognizer(int AudioSource)
ASM:F_BSR_InitRecognizer
【功能說明】辨識器初始化。
【參 數(shù)】 定義語音輸入來源。通過MIC語音輸入還是LINE_IN電壓模擬量輸入。
【返 回 值】無。
2)【API格式】C:int BSR_GetResult();
ASM:F_ BSR_GetResult
【返回值】=R1
【功能說明】辨識中獲取數(shù)據(jù)。
【參 數(shù)】 無。
【返 回 值】
當(dāng)無命令識別出來時(shí),返回0;
識別器停止未初始化或識別未激活返回-1;
當(dāng)識別不合格時(shí)返回-2;
當(dāng)識別出來時(shí)返回命令的序號。
` 【備 注】 該函數(shù)用于啟動辨識,BSR_GetResult();
3)【API格式】C: void BSR_StopRecognizer(void);
ASM:F_ BSR_StopRecognizer
【功能說明】停止辨識。
【參 數(shù)】無。
【返 回 值】 無。
【備 注】該函數(shù)是用于停止識別,當(dāng)調(diào)用此函數(shù)時(shí),F(xiàn)IQ_TMA中斷將關(guān)閉。
中斷部分:
【API格式】 ASM:_BSR_InitRecognizer
【功能說明】 在中斷中調(diào)用,并通過中斷將語音信號送DAC通道播放。
【參 數(shù)】無。
【返 回 值】無。
【備 注】
① 該函數(shù)在中斷FIQ_TMA中調(diào)用
② 當(dāng)主程序調(diào)用BSR_InitRecognizer時(shí),辨識器便打開8K采樣率的FIQ_TMA中斷并開始將采樣的語音數(shù)據(jù)填入辨識器的數(shù)據(jù)隊(duì)列中。
③ 應(yīng)用程序需要設(shè)置一下程序段在FIQ_TMA中:
.PUBLIC _FIQ
.EXTERNAL _BSR_FIQ_Routine //定義全局變量
.TEXT
_FIQ:
PUSH R1,R4 to [SP] //寄存器入棧保護(hù)
R1 = [P_INT_Ctrl]
CALL _BSR_FIQ_Routine //調(diào)用子程序
R1 = 0x2000 //清中斷標(biāo)志位
[P_INT_Clear] = R1
POP R1,R4 from [SP]; //寄存器組出棧
RETI
END
以下是特定人辨識的一個(gè)范例:
在程序中我們通過三條語句的訓(xùn)練演示特定人連續(xù)音識別,其中第一條語句為觸發(fā)名稱。另外兩條為命令,訓(xùn)練完畢開始辨識當(dāng)識別出觸發(fā)名稱后,開始發(fā)布命令,則會聽到自己設(shè)置的應(yīng)答,具體命令如下:
****************訓(xùn)練******************************************
提示音 輸入語音
--------------------------------------------------------------------------------------------------------
"請輸入觸發(fā)名稱" "警衛(wèi)"
"請輸入第一條命令" "開槍"
"請輸入第二條命令" "你在干什么?"
"請?jiān)僬f一遍"(以上提示音每說完一遍出現(xiàn)此命令)
"沒有聽到任何聲音"(當(dāng)沒有檢測到聲音時(shí)出現(xiàn)此命令)
"兩次輸入名稱不相同"(當(dāng)兩次輸入的名稱不同時(shí)出現(xiàn)此命令)
"兩次輸入命令不相同"(當(dāng)兩次輸入的命令有差異時(shí)出現(xiàn)此命令)
"準(zhǔn)備就緒,請開始辨識"(以上三條語句全部訓(xùn)練成功時(shí),進(jìn)入識別)
*****************識別**********************************************************************
發(fā)布命令 應(yīng)答
----------------------------------------------------------------------------------------------------------
"警衛(wèi)" "在"/"長官"
"開槍" "槍聲"
"你在干什么?" "我在巡邏"/"我在休息"/"我在等人"
注意:在每次提示音結(jié)束后2-3秒再輸入命令或當(dāng)上次應(yīng)答結(jié)束2-3秒后再發(fā)布命令
#INCLUDE "bsrsd.h"
#DEFINE NAME_ID 0x100
#DEFINE COMMAND_ONE_ID 0x101
#DEFINE COMMAND_TWO_ID 0x102
#DEFINE RSP_INTR 0
#DEFINE RSP_NAME 1
#DEFINE RSP_FIRE 2
#DEFINE RSP_GUARD 3
#DEFINE RSP_AGAIN 4
#DEFINE RSP_NOVOICE 5
#DEFINE RSP_NAMEDIFF 6
#DEFINE RSP_CMDDIFF 7
#DEFINE RSP_STAR 8
#DEFINE RSP_MASTER 9
#DEFINE RSP_HERE 10
#DEFINE RSP_GUNSHOT 0
#DEFINE RSP_PATROL 11
#DEFINE RSP_READY 12
#DEFINE RSP_COPY 13
#DEFINE RSP_NOISY 14
//..................全程變量..................……………………………………………………………………….
int gActivated = 0;
//該變量用于檢測是否有觸發(fā)命令,當(dāng)有識別出語句為觸發(fā)名稱則該位置1
int gTriggerRespond[] = {RSP_MASTER, RSP_HERE, RSP_MASTER};
//第一條命令應(yīng)答
int gComm2Respond[] = {RSP_PATROL, RSP_READY, RSP_COPY};
//第二條命令應(yīng)答
extern void ClearWatchDog();
int PlayFlag = 0;
void PlayRespond2(int Result)
//槍聲放音子程序
{
BSR_StopRecognizer();
SACM_A2000_Initial(1);
SACM_A2000_Play(Result, 3, 3);
while((SACM_A2000_Status()&0x0001) != 0)
{
SACM_A2000_ServiceLoop();
ClearWatchDog();
}
SACM_A2000_Stop();
BSR_InitRecognizer(BSR_MIC);
BSR_EnableCPUIndicator();
}
void PlayRespond(int Result) //放音子程序
{
BSR_StopRecognizer();
SACM_S480_Initial(1);
SACM_S480_Play(Result, 3, 3);
while((SACM_S480_Status()&0x0001) != 0)
{
SACM_S480_ServiceLoop();
ClearWatchDog();
}
SACM_S480_Stop();
BSR_InitRecognizer(BSR_MIC);
BSR_EnableCPUIndicator(); //啟動實(shí)時(shí)監(jiān)控
}
int TrainWord(int WordID, int RespondID) //命令訓(xùn)練
{
int res;
PlayRespond(RespondID);
while(1)
{
res = BSR_Train(WordID,BSR_TRAIN_TWICE);
if(res == 0) break;
switch(res)
{
case -1: //沒有檢測出聲音
PlayRespond(RSP_NOVOICE);
return -1;
case -2: //需要重新訓(xùn)練一遍
PlayRespond(RSP_AGAIN);
break;
case -3: //環(huán)境太吵
PlayRespond(RSP_NOISY);
return -1;
case -4: //數(shù)據(jù)庫滿
return -1;
case -5: //檢測出聲音不同
if(WordID == NAME_ID)
PlayRespond(RSP_NAMEDIFF); //兩次輸入名稱不同
else
PlayRespond(RSP_CMDDIFF);//兩次輸入命令不同
return -1;
case -6: //序號錯(cuò)誤
return -1;
}
}
return 0;
}
int main()
{
int res, timeCnt=0, random_no=0;
BSR_DeleteSDGroup(0); // 初始化存儲器為RAM
PlayRespond(RSP_INTR); //播放開始訓(xùn)練的提示音
//..........訓(xùn)練名稱..............................
while(TrainWord(NAME_ID,1) != 0) ;
//..........訓(xùn)練第一條命令.......................
while(TrainWord(COMMAND_ONE_ID,2) != 0) ;
//..........訓(xùn)練第二條命令.......................
while(TrainWord(COMMAND_TWO_ID,3) != 0) ;
//..........開始識別命令.........................
BSR_InitRecognizer(BSR_MIC); //辨識器初始化
BSR_EnableCPUIndicator();
PlayRespond(RSP_STAR); // 播放開始辨識的提示音
while(1)
{
random_no ++;
if(random_no >= 3) random_no = 0;
res = BSR_GetResult();
if(res > 0) //識別出命令
{
if(gActivated)
{
timeCnt = 0;
switch(res)
{
case NAME_ID:
PlayRespond(gTriggerRespond[random_no]);
break;
case COMMAND_ONE_ID:
PlayFlag = 1;
PlayRespond2(RSP_GUNSHOT);
PlayFlag = 0;
gActivated = 0;
break;
case COMMAND_TWO_ID:
PlayRespond(gComm2Respond[random_no]);
gActivated = 0;
}
}
else
{
if(res == NAME_ID)
{PlayRespond(gTriggerRespond[random_no]);
gActivated = 1;
timeCnt = 0;
}
}
}
else if (gActivated)
{
if (++timeCnt > 450) //超出定時(shí)
{PlayRespond(RSP_NOVOICE); //在設(shè)定時(shí)間內(nèi)沒有檢測出聲音
gActivated = 0;
timeCnt = 0;
}
}
}
}
中斷程序:
.PUBLIC _FIQ
.EXTERNAL _BSR_FIQ_Routine
.EXTERNAL __gIsStopRecog //變量值 = 0 辨識器忙
// = 1 辨識器停止
.PUBLIC _BREAK,_IRQ0, _IRQ1, _IRQ2, _IRQ3, _IRQ4, _IRQ5, _IRQ6, _IRQ7
.EXTERNAL _PlayFlag
.INCLUDE s480.inc;
.INCLUDE A2000.inc;
.INCLUDE resource.inc
.INCLUDE hardware.inc
.TEXT
_FIQ:
push R1,R4 to [SP]
R1 = [P_INT_Ctrl]
R1 &= 0x2000
jz ?notTimerA //當(dāng)不為TIQ_TMA,則轉(zhuǎn)
R1 = [__gIsStopRecog]
jnz ?BSR_NotBusy
//[__gIsStopRecog]為1則轉(zhuǎn)至放音處理
call _BSR_FIQ_Routine //為0,調(diào)用辨識子程序
jmp ?BSR_Busy //返回中斷
?BSR_NotBusy: //放音處理
R2 = [_PlayFlag]
jnz ?Play2000 //[_PlayFlag]為1則是播放2000
call F_FIQ_Service_SACM_S480; //為0,播放480
jmp ?BSR_Busy //返回中斷
?Play2000: //2000播放子程序
call F_FIQ_Service_SACM_A2000;
?BSR_Busy: //返回中斷
R1 = 0x2000
[P_INT_Clear] = R1
pop R1,R4 from [SP];
reti;
?notTimerA:
R1 = 0x8800;
[P_INT_Clear] = R1;
pop R1,R4 from [SP];
reti;
.END
四、源碼如何解密PHP
解密后的代碼如下:
$fp=fopen(__FILE__,'rb');
fread($fp,1260);
$OO00O00O0=(base64_decode(strstr( fread($fp,380)
,'BgqGbi8/ck0Yw+fDjA15VnoPrMWzysXKea4pZudNI7UH9TEQvtSlJx3Rhm2COFL6='
,'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/')));
eval($OO00O00O0);
即取該文件?>后的字符進(jìn)行base64_decode后作php腳本再執(zhí)行
php版本不支持strstr的參數(shù)個(gè)數(shù)為三個(gè)的,自己繼續(xù)研究吧
以上就是關(guān)于61源碼網(wǎng)相關(guān)問題的回答。希望能幫到你,如有更多相關(guān)問題,您也可以聯(lián)系我們的客服進(jìn)行咨詢,客服也會為您講解更多精彩的知識和內(nèi)容。
推薦閱讀:
杭州高新數(shù)碼城(杭州高新數(shù)碼城610室)
標(biāo)準(zhǔn)模型61種粒子(標(biāo)準(zhǔn)模型61種粒子有哪些)
9861云南網(wǎng)站建設(shè)(云南網(wǎng)站建設(shè)百度官方)