欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種基于P300的腦控話語發(fā)聲器的實現(xiàn)方法與流程

文檔序號:11728989閱讀:372來源:國知局

本發(fā)明屬于腦機接口與自然語言處理相結(jié)合的應(yīng)用,涉及一種基于p300的句子拼寫并通過語音設(shè)備實現(xiàn)大腦說話的方法。



背景技術(shù):

腦機接口為一些運動神經(jīng)損害而大腦功能無損的患者提供與外界交流的一種方式,其中p300speller對大腦通過一系列的刺激,分析腦電信號,識別出用戶想要拼寫的字符來達(dá)到與外界的交流。目前p300speller要完成一個句子的拼寫只能夠?qū)ψ址饌€拼寫,在產(chǎn)生錯誤時用戶只能自行修正。存在的問題是,拼寫一個句子需要較長的時間,用戶容易疲勞,拼寫效果不佳。



技術(shù)實現(xiàn)要素:

有鑒于此,本發(fā)明的目的是提高用戶利用p300speller拼寫句子的速度,并提高用戶與外界交流的效率。本發(fā)明中用戶在拼寫過程中可省略某些次要字符,并且不用自己修正錯誤,用解碼算法對拼寫的字符序列進(jìn)行修正,將得到正確的句子傳送至語音發(fā)聲器。

本發(fā)明采用以下方案實現(xiàn):一種基于p300的腦控話語發(fā)聲器的實現(xiàn)方法,包括以下步驟:

步驟s1:用戶通過p300拼寫矩陣拼寫句子sentence=c1c2,…,cn,p300拼寫矩陣包括字母a-z,數(shù)字0-9共36個字符,ci,i=1,…n為p300拼寫矩陣中的字符;

步驟s2:修正sentence,在sentence中插入漏輸?shù)淖址薷腻e誤字符,得到一個新的句子c_sentence;

步驟s3:將c_sentence傳送至語音發(fā)聲器并播放。

進(jìn)一步地,所述步驟s2具體包括以下步驟:

步驟s21:設(shè)置結(jié)構(gòu)變量cur,cur.sen=sentence,cur.loc=1,cur.len=length(sentence);初始化棧s,表l,并將cur壓入棧s;

步驟s22:若棧s非空,彈棧更新cur,轉(zhuǎn)下一步;否則,轉(zhuǎn)入步驟s26;

步驟s23:判斷cur.loc位置上是否要插入字符;若要,ins.sen=insert(cur.sen,cur.loc),ins.loc=cur.loc+1,ins.len=cur.len+1,將ins壓入棧s;

步驟s24:修正cur.loc位置上的字符,cur.sen=modify(cur.sen,cur.loc);cur.loc=cur.loc+1;

步驟s25:若cur.loc大于cur.len,將cur插入表l,否則將cur壓入棧s;轉(zhuǎn)入步驟s22;

步驟s26:用單詞語言模型計算表l中所有句子的概率,輸出概率最高的那個句子c_sentence。

進(jìn)一步地,步驟s23中所述的判斷cur.loc位置上是否要插入字符及insert(cur.sen,cur.loc)的具體方法為:

以cur.loc位置為中心,從cur.sen中取出一個字符子序列,記為c1c2…ck;在c1c2…ck中對應(yīng)cur.loc的位置上插入字符ci,ci∈c,c包含空格字符和p300拼寫矩陣中的所有字符,得到c1c2…ci...ck+1;用5-gram字符語言模型計算c1c2...ck和c1c2…ci...ck+1,ci∈c的概率,從c1c2…ci…ck+1,ci∈c這一組字符序列中選出概率最大的那一個,比較它與c1c2...ck的概率,若它的概率更大,則要插入字符;

當(dāng)要插入字符時,insert(cur.sen,cur.loc)在cur.sen字符序列的cur.loc位置上插入使得c1c2...ci...ck+1,ci∈c概率最大的那個ci。

進(jìn)一步地,所述步驟s24中所述的修正cur.loc位置上的字符,modify(cur.sen,cur.loc)的具體方法為:

根據(jù)cur.sen在cur.loc位置上的那個字符和p300拼寫矩陣概率模型,選出實際要輸入的可能性較大的若干個字符構(gòu)成字符集合令i=cur.loc,計算其中cl為cur.sen在l位置上原本的那個字符,cl'為cur.sen在l位置上修正后的字符,p(c'l|cl)取自p300拼寫矩陣概率模型,若cl為插入的空格,則p(c'l|cl)取1;c1c2...ci...cn代表cur.sen或其修正后的結(jié)果,p(c1c2...ci...cn)依據(jù)5-gram字符語言模型計算,α為一比例因子;計算得到cb,用cb替代cur.sen中的ci作為modify(cur.sen,cur.loc)的輸出。

進(jìn)一步地,所述步驟s26中所述的計算句子的概率的具體方法為:

讀取表l中的句子cur.sen,以空格為分隔符將單詞分隔開,單詞依序存于wi,i=1,...,m中,然后用3-gram單詞語言模型計算句子的概率,公式如下,

其中c(wi-2wi-1wi)和c(wi-2wi-1)分別為單詞wi-2wi-1wi和wi-2wi-1在語料庫中出現(xiàn)的次數(shù)。

進(jìn)一步地,所述根據(jù)cur.sen在cur.loc位置上的那個字符和p300拼寫矩陣概率模型,選出實際要輸入的可能性較大的若干個字符構(gòu)成字符集合以及p(c'l|cl)取自p300拼寫矩陣概率模型,其具體方法為:

用戶在使用前進(jìn)行p300拼寫訓(xùn)練,計算得到p300拼寫矩陣概率模型,表示為矩陣a;a中的元素aij=p(cj|ci),ci為用戶拼寫得到的字符,cj為實際上要拼寫的字符,p(cj|ci)為當(dāng)拼寫得到的字符為ci時實際上想要拼寫的字符是cj的概率,ci,cj∈{'a','b',...,'z','0',...,'9'},i=1,2,...,36,j=1,2,..36;

對于cur.sen在cur.loc位置上的那個字符,查詢矩陣a對應(yīng)的行,就可得到實際要拼寫的可能性較大的那些字符;

p(c'l|cl)中的cl和cl'都是字符,可分別對應(yīng)矩陣a的行與列,從a中取出相應(yīng)的概率。

進(jìn)一步地,采用所述5-gram字符語言模型進(jìn)行計算的具體方法為:

5-gram字符語言模型計算任一字符序列c1c2...cn的概率所用的方法是,其中,c(c1...ci-1ci)和c(c1...ci-1)分別為字符c1...ci-1ci和c1...ci-1在語料庫出現(xiàn)的次數(shù),c(ci-4...ci-1ci)和c(ci-4...ci-1)分別為字符ci-4...ci-1ci和ci-4...ci-1在語料庫中出現(xiàn)的次數(shù)。

運動神經(jīng)受損而大腦功能完好的患者與外界進(jìn)行盡可能快的交流對了解患者的需求以及病情是非常重要的,而現(xiàn)有的利用p300speller來拼寫句子所需要的時間較長。因此,與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點:

1、本發(fā)明能夠讓用戶在拼寫過程中省略一些字符,減少拼寫的工作量,提高拼寫效率。

2、本發(fā)明采用解碼算法修正用戶拼寫的句子,提高句子拼寫的速率,從而提高與外界交流的速度。

3、本發(fā)明將拼寫的句子通過語音設(shè)備連接,更直接將用戶與外界相聯(lián)系,具有很強的實際應(yīng)用意義。

附圖說明

圖1是本發(fā)明的方法流程圖示意圖。

具體實施方式

下面結(jié)合附圖及實施例對本發(fā)明做進(jìn)一步說明。

本實施例提供一種基于p300的腦控話語發(fā)聲器的實現(xiàn)方法,如圖1所示,包括以下步驟:

步驟s1:用戶通過p300拼寫矩陣拼寫句子sentence=c1c2,…,cn,p300拼寫矩陣包括字母a-z,數(shù)字0-9共36個字符,ci,i=1,…n為p300拼寫矩陣中的字符;

步驟s2:修正sentence,在sentence中插入漏輸?shù)淖址?,修改錯誤字符,得到一個新的句子c_sentence;

步驟s3:將c_sentence傳送至語音發(fā)聲器并播放。

在本實施例中,步驟s2中具體包括以下步驟:

步驟s21:設(shè)置結(jié)構(gòu)變量cur,cur.sen=sentence,cur.loc=1,cur.len=length(sentence);初始化棧s,表l,并將cur壓入棧s;

步驟s22:若棧s非空,彈棧更新cur,轉(zhuǎn)下一步;否則,轉(zhuǎn)入步驟s26;

步驟s23:判斷cur.loc位置上是否要插入字符;若要,ins.sen=insert(cur.sen,cur.loc),ins.loc=cur.loc+1,ins.len=cur.len+1,將ins壓入棧s;

步驟s24:修正cur.loc位置上的字符,cur.sen=modify(cur.sen,cur.loc);cur.loc=cur.loc+1;

步驟s25:若cur.loc大于cur.len,將cur插入表l,否則將cur壓入棧s;轉(zhuǎn)入步驟s22;

步驟s26:用單詞語言模型計算表l中所有句子的概率,輸出概率最高的那個句子c_sentence。

在本實施例中,步驟s23中所述的判斷cur.loc位置上是否要插入字符及insert(cur.sen,cur.loc)的具體方法為:

以cur.loc位置為中心,從cur.sen中取出一個字符子序列,記為c1c2…ck;在c1c2...ck中對應(yīng)cur.loc的位置上插入字符ci,ci∈c,c包含空格字符和p300拼寫矩陣中的所有字符,得到c1c2…ci…ck+1;用5-gram字符語言模型計算c1c2...ck和c1c2...ci...ck+1,ci∈c的概率,從c1c2...ci...ck+1,ci∈c這一組字符序列中選出概率最大的那一個,比較它與c1c2...ck的概率,若它的概率更大,則要插入字符;

當(dāng)要插入字符時,insert(cur.sen,cur.loc)在cur.sen字符序列的cur.loc位置上插入使得c1c2...ci...ck+1,ci∈c概率最大的那個ci。

在本實施例中,所述步驟s24中所述的修正cur.loc位置上的字符,modify(cur.sen,cur.loc)的具體方法為:

根據(jù)cur.sen在cur.loc位置上的那個字符和p300拼寫矩陣概率模型,選出實際要輸入的可能性較大的若干個字符構(gòu)成字符集合令i=cur.loc,計算其中cl為cur.sen在l位置上原本的那個字符,cl'為cur.sen在l位置上修正后的字符,p(c'l|cl)取自p300拼寫矩陣概率模型,若cl為插入的空格,則p(c'l|cl)取1;c1c2...ci...cn代表cur.sen或其修正后的結(jié)果,p(c1c2...ci...cn)依據(jù)5-gram字符語言模型計算,α為一比例因子;計算得到cb,用cb替代cur.sen中的ci作為modify(cur.sen,cur.loc)的輸出。

在本實施例中,步驟s26中所述的計算句子的概率的具體方法為:

讀取表l中的句子cur.sen,以空格為分隔符將單詞分隔開,單詞依序存于wi,i=1,...,m中,然后用3-gram單詞語言模型計算句子的概率,公式如下,

其中c(wi-2wi-1wi)和c(wi-2wi-1)分別為單詞wi-2wi-1wi和wi-2wi-1在語料庫中出現(xiàn)的次數(shù)。

在本實施例中,所述根據(jù)cur.sen在cur.loc位置上的那個字符和p300拼寫矩陣概率模型,選出實際要輸入的可能性較大的若干個字符構(gòu)成字符集合以及p(c'l|cl)取自p300拼寫矩陣概率模型,其具體方法為:

用戶在使用前進(jìn)行p300拼寫訓(xùn)練,計算得到p300拼寫矩陣概率模型,表示為矩陣a;a中的元素aij=p(cj|ci),ci為用戶拼寫得到的字符,cj為實際上要拼寫的字符,p(cj|ci)為當(dāng)拼寫得到的字符為ci時實際上想要拼寫的字符是cj的概率,ci,cj∈{'a','b',...,'z','0',...,'9'},i=1,2,...,36,j=1,2,..36;

對于cur.sen在cur.loc位置上的那個字符,查詢矩陣a對應(yīng)的行,就可得到實際要拼寫的可能性較大的那些字符;

p(c'l|cl)中的cl和cl'都是字符,可分別對應(yīng)矩陣a的行與列,從a中取出相應(yīng)的概率。

在本實施例中,采用所述5-gram字符語言模型進(jìn)行計算的具體方法為:

5-gram字符語言模型計算任一字符序列c1c2...cn的概率所用的方法是,其中,c(c1...ci-1ci)和c(c1...ci-1)分別為字符c1...ci-1ci和c1...ci-1在語料庫出現(xiàn)的次數(shù),c(ci-4...ci-1ci)和c(ci-4...ci-1)分別為字符ci-4...ci-1ci和ci-4...ci-1在語料庫中出現(xiàn)的次數(shù)。

在本實施例中,步驟s3的具體方法為:

將修正完的句子c_sentence傳入語音發(fā)聲器espeak的命令行執(zhí)行文件espeak.exe播放。

在本實施例中,p300拼寫矩陣可調(diào)整,其大小以及所包含的字符不是本專利的核心內(nèi)容。

在本實施例中,p300拼寫矩陣概率模型中矩陣a的大小根據(jù)p300拼寫矩陣的大小而定。

以上所述僅為本發(fā)明的較佳實施例,凡依本發(fā)明申請專利范圍所做的均等變化與修飾,皆應(yīng)屬本發(fā)明的涵蓋范圍。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
东港市| 大荔县| 玉环县| 图片| 迭部县| 新巴尔虎右旗| 滦南县| 金川县| 肥城市| 云霄县| 江安县| 三原县| 昭觉县| 峨眉山市| 明星| 南华县| 广安市| 文水县| 肃宁县| 贵阳市| 玉屏| 大姚县| 济阳县| 巩留县| 莱州市| 射洪县| 呼伦贝尔市| 三江| 县级市| 青冈县| 新沂市| 阿拉善盟| 衡山县| 安顺市| 湟源县| 清流县| 勐海县| 凤山县| 芦山县| 确山县| 察隅县|