国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

飛槳paddlespeech語(yǔ)音喚醒推理C定點(diǎn)實(shí)現(xiàn)

這篇具有很好參考價(jià)值的文章主要介紹了飛槳paddlespeech語(yǔ)音喚醒推理C定點(diǎn)實(shí)現(xiàn)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

前面的文章(飛槳paddlespeech語(yǔ)音喚醒推理C浮點(diǎn)實(shí)現(xiàn))講了飛槳paddlespeech語(yǔ)音喚醒推理的C浮點(diǎn)實(shí)現(xiàn)。但是嵌入式設(shè)備通常CPU頻率低和memory小,在嵌入式設(shè)備上要想流暢的運(yùn)行語(yǔ)音喚醒功能,通常用的是定點(diǎn)實(shí)現(xiàn)。于是我就在浮點(diǎn)實(shí)現(xiàn)(把卷積層和相應(yīng)的batchNormal層合并成一個(gè)卷積層)的基礎(chǔ)上做了定點(diǎn)實(shí)現(xiàn)。需要說(shuō)明的是目前完成的是16bit的定點(diǎn)實(shí)現(xiàn),后面會(huì)在此基礎(chǔ)上做8bit的定點(diǎn)實(shí)現(xiàn)。

?

做定點(diǎn)實(shí)現(xiàn)主要包括兩部分工作,一是模型參數(shù)的量化和定Q格式等,二是基于Q格式的定點(diǎn)實(shí)現(xiàn)。關(guān)于模型參數(shù)的量化,我曾寫過相關(guān)的文章(深度學(xué)習(xí)中神經(jīng)網(wǎng)絡(luò)模型的量化),有興趣的可以去看看。我用的是對(duì)稱量化,這里簡(jiǎn)述一下這部分的工作。

?

1,? 在python下根據(jù)paddlepaddle提供的API(named_parameters)得到模型每層的參數(shù)(weight & bias),同時(shí)看每層的weight和bias的絕對(duì)值的最大值,從而確定參數(shù)的Q格式,再以這個(gè)Q格式對(duì)weight 和bias做量化。

?

2,? 在python下得到測(cè)試集里非常多個(gè)文件每層的輸入和輸出的絕對(duì)值的最大值,從而確定每層的輸入和輸出的Q格式。

?

至于代碼的定點(diǎn)化,主要包括如下幾點(diǎn):

?

1,? 卷積層的定點(diǎn)化

主要是做好乘累加以及輸出的移位和防飽和處理。在文章(深度學(xué)習(xí)中神經(jīng)網(wǎng)絡(luò)模型的量化)里有詳細(xì)描述,這里就不細(xì)講了。

?

2,? sigmoid的定點(diǎn)化

調(diào)研了一下,sigmoid的定點(diǎn)化主要用查表法來(lái)實(shí)現(xiàn)。Sigmoid(x)在x<=-8時(shí)近似為0,在x>=8時(shí)近似為1,因此做表時(shí)在[-8,8)之間就可以了。 若表中有256個(gè)值,則表中x的間隔是16/256 = 0.0625。表中第一個(gè)值對(duì)應(yīng)的是x=-8時(shí)sigmoid的值,第二個(gè)值對(duì)應(yīng)的是x=-7.9375(-8 + 0.0635 = -7.9375)時(shí)sigmoid的值,以此類推。Sigmoid輸出的取值范圍是(0,1),因此用的Q格式是Q0.15。例如當(dāng)x=0時(shí),sigmoid(0) = 0.5,表示成Q0.15格式是0x4000。當(dāng)x在[-8,8)范圍內(nèi)每隔0.0625的256個(gè)sigmoid值都算出來(lái)并換算成Q0.15格式,就得到表中的256個(gè)值了。

具體實(shí)現(xiàn)時(shí)參考率CMSIS_5的代碼,如下圖:

飛槳paddlespeech語(yǔ)音喚醒推理C定點(diǎn)實(shí)現(xiàn)

做表時(shí)把前128個(gè)值(x < 0時(shí)的)與后128個(gè)值(x>=0時(shí)的)做了位置上的互換。主要是因?yàn)樘幚頃r(shí)先對(duì)x定點(diǎn)化后的16位輸入值做右移8位處理,就變成了8位的值,再變成unsigned char(U8)用于做表的索引。 U8(0) = 0, U8(127) = 127, 但U8(-128) = 128, U8(-127) = 129, ……, U8(-1) = 255。所以表中的位置前后部分就互換了。再看sigmoid層的輸入與sigmoid函數(shù)的輸入的關(guān)系。 假設(shè)sigmoid函數(shù)輸入的16位定點(diǎn)值為0x1869,右移8位后為0x18,即為24。表中第24個(gè)代表的是x=1.5(24 * 0.0675 = 1.5)時(shí)的sigmoid值。我的sigmoid層的輸入Q格式是Q7.8, 1.5用Q7.8表示就是0x0180, 而函數(shù)中要求的是0x18XX,所以需要把層的輸入的值做左移4位處理。由于sigmoid函數(shù)只對(duì)[-8,8)內(nèi)的值做處理,因此首先需要對(duì)層的輸入值做[-8,8)的限幅處理。上面兩步的代碼如下圖:

飛槳paddlespeech語(yǔ)音喚醒推理C定點(diǎn)實(shí)現(xiàn)

調(diào)sigmoid_q15()時(shí)把int_width設(shè)成3,就表示輸入范圍是[-8,8)。 由于輸入的x值不一定正好落在表中的那些點(diǎn)上,如x = 0.0325就落在點(diǎn)0.0和點(diǎn)0.0625之間。 為了使sigmoid的輸出值更準(zhǔn)確,函數(shù)中用線性插值法求那些不落在點(diǎn)上的sigmoid值。我在文章(基于sinc的音頻重采樣(二):實(shí)現(xiàn))中講過線性插值法,有興趣的可以去看看。要想sigmoid的輸出值更準(zhǔn)確,還可以擴(kuò)大表里值的個(gè)數(shù),比如變成512個(gè)值,代價(jià)是多用些memory。

?

3,? 確定好評(píng)估的指標(biāo)

我在文章(深度學(xué)習(xí)中神經(jīng)網(wǎng)絡(luò)模型的量化)中對(duì)評(píng)估指標(biāo)有所描述。這里我選用的是歐氏距離(Euclidean Distance)。具體調(diào)試時(shí)浮點(diǎn)實(shí)現(xiàn)和定點(diǎn)實(shí)現(xiàn)并行運(yùn)行。即算出的浮點(diǎn)的fbank值作為浮點(diǎn)實(shí)現(xiàn)模型的輸入,將浮點(diǎn)的Fbank值根據(jù)定標(biāo)轉(zhuǎn)換成定點(diǎn)值作為定點(diǎn)實(shí)現(xiàn)模型的輸入,然后每層的浮點(diǎn)實(shí)現(xiàn)和定點(diǎn)實(shí)現(xiàn)并行運(yùn)行。浮點(diǎn)實(shí)現(xiàn)得到的結(jié)果是浮點(diǎn)值,定點(diǎn)實(shí)現(xiàn)得到的結(jié)果是定點(diǎn)值,再根據(jù)輸出的Q格式轉(zhuǎn)換成浮點(diǎn)值。最后再用歐氏距離對(duì)輸出結(jié)果進(jìn)行評(píng)估。下圖給出了某一depthwise卷積層的實(shí)現(xiàn)代碼。先做浮點(diǎn)的卷積層運(yùn)算,結(jié)果保存在fbankFloat里,然后做定點(diǎn)的卷積層運(yùn)算,結(jié)果保存在fbankFix里,再根據(jù)輸出的Q格式將fbankFix轉(zhuǎn)換成浮點(diǎn)值,最后算歐氏距離。歐氏距離越小越好。

飛槳paddlespeech語(yǔ)音喚醒推理C定點(diǎn)實(shí)現(xiàn)

下圖給出了調(diào)試好后部分層的歐氏距離的值,都是很小的(圖中0/1/2等表示卷積層ID)。

飛槳paddlespeech語(yǔ)音喚醒推理C定點(diǎn)實(shí)現(xiàn)

?

4,如何調(diào)試

模型定點(diǎn)化調(diào)試時(shí)要從第一層到最后一層一層一層的調(diào)試,只有當(dāng)上一層的歐氏距離達(dá)標(biāo)后再去調(diào)下一層。具體到調(diào)試某一層時(shí),通過log找到那些浮點(diǎn)值與定點(diǎn)轉(zhuǎn)浮點(diǎn)后的值差值較大的值,再到浮點(diǎn)實(shí)現(xiàn)和定點(diǎn)實(shí)現(xiàn)里打印出輸入和運(yùn)算后的具體值,分析具體原因。有可能是定點(diǎn)實(shí)現(xiàn)里移位防飽和等沒做好,也有可能是參數(shù)量化沒作對(duì),還有可能是輸入和輸出的Q格式?jīng)]定好導(dǎo)致誤差偏大等。在定輸入和輸出的Q格式時(shí),是根據(jù)絕對(duì)值的最大值來(lái)的。如果發(fā)現(xiàn)精度不夠,有可能需要調(diào)整輸入或輸出的Q格式(小數(shù)位要多一位,依據(jù)是看超出定標(biāo)最大值出現(xiàn)的次數(shù),次數(shù)占比較小就可以)。

?

調(diào)試時(shí)是用一個(gè)音頻文件去調(diào)。等模型調(diào)試完成后要在一個(gè)大的數(shù)據(jù)集上對(duì)定點(diǎn)實(shí)現(xiàn)做全面的評(píng)估,看喚醒率和誤喚醒率的變化。我做完定點(diǎn)實(shí)現(xiàn)后在一個(gè)有兩萬(wàn)五千多音頻文件的數(shù)據(jù)集上做評(píng)估,跟浮點(diǎn)實(shí)現(xiàn)比,喚醒率下降了0.2%,誤喚醒率上升了0.3%。說(shuō)明定點(diǎn)化后性能沒有出現(xiàn)明顯的下降。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-589673.html

到了這里,關(guān)于飛槳paddlespeech語(yǔ)音喚醒推理C定點(diǎn)實(shí)現(xiàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【飛槳PaddleSpeech語(yǔ)音技術(shù)課程】— 語(yǔ)音識(shí)別-Deepspeech2

    (以下內(nèi)容搬運(yùn)自飛槳PaddleSpeech語(yǔ)音技術(shù)課程,點(diǎn)擊鏈接可直接運(yùn)行源碼) Demo實(shí)現(xiàn):https://github.com/PaddlePaddle/PaddleSpeech/blob/develop/demos/automatic_video_subtitiles/ 語(yǔ)音識(shí)別(Automatic Speech Recognition, ASR) 是一項(xiàng)從一段音頻中提取出語(yǔ)言文字內(nèi)容的任務(wù)。 (出處:DLHLP 李宏毅 語(yǔ)音識(shí)別課程

    2024年02月08日
    瀏覽(25)
  • 百度飛槳PaddleSpeech的簡(jiǎn)單使用

    百度飛槳PaddleSpeech的簡(jiǎn)單使用

    PaddleSpeech?是基于飛槳?PaddlePaddle?的語(yǔ)音方向的開源模型庫(kù),用于語(yǔ)音和音頻中的各種關(guān)鍵任務(wù)的開發(fā),包含大量基于深度學(xué)習(xí)前沿和有影響力的模型,一些典型的應(yīng)用示例如下:語(yǔ)音識(shí)別、語(yǔ)音翻譯 (英譯中)、語(yǔ)音合成、標(biāo)點(diǎn)恢復(fù)等。 我只用到了語(yǔ)音識(shí)別(語(yǔ)音轉(zhuǎn)文字)、語(yǔ)

    2024年02月03日
    瀏覽(38)
  • Python使用PaddleSpeech實(shí)現(xiàn)語(yǔ)音識(shí)別(ASR)、語(yǔ)音合成(TTS)

    Python使用PaddleSpeech實(shí)現(xiàn)語(yǔ)音識(shí)別(ASR)、語(yǔ)音合成(TTS)

    目錄 安裝 語(yǔ)音識(shí)別 補(bǔ)全標(biāo)點(diǎn) 語(yǔ)音合成 參考 PaddleSpeech是百度飛槳開發(fā)的語(yǔ)音工具 注意,PaddleSpeech不支持過高版本的Python,因?yàn)樵诟甙姹镜腜ython中,飛槳不再提供paddle.fluid API。這里面我用的是Python3.7 需要通過3個(gè)pip命令安裝PaddleSpeech: 在使用的時(shí)候,urllib3庫(kù)可能會(huì)報(bào)錯(cuò),因

    2024年04月25日
    瀏覽(29)
  • snowboy 自定義喚醒詞 實(shí)現(xiàn)語(yǔ)音喚醒【語(yǔ)音助手】

    本系列主要目標(biāo)初步完成一款智能音箱的基礎(chǔ)功能,包括語(yǔ)音喚醒、語(yǔ)音識(shí)別(語(yǔ)音轉(zhuǎn)文字)、處理用戶請(qǐng)求(比如查天氣等,主要通過rasa自己定義意圖實(shí)現(xiàn))、語(yǔ)音合成(文字轉(zhuǎn)語(yǔ)音)功能。 語(yǔ)音識(shí)別、語(yǔ)音合成采用離線方式實(shí)現(xiàn)。 操作系統(tǒng):Ubuntu 22.04.3 LTS CPU:Intel? Core?

    2024年02月14日
    瀏覽(37)
  • Windows系統(tǒng)實(shí)現(xiàn)喚醒+合成+命令詞智能語(yǔ)音交互

    Windows系統(tǒng)實(shí)現(xiàn)喚醒+合成+命令詞智能語(yǔ)音交互

    1、之前寫過離線能力調(diào)用,今天來(lái)個(gè)終極版,實(shí)現(xiàn)智能交互或者結(jié)合大模型的智能交互示例,下面進(jìn)入正題。上B站效果離線喚醒+離線合成+離線命令詞實(shí)現(xiàn)智能交互_嗶哩嗶哩_bilibili 2、到訊飛開放平臺(tái)下載喚醒+合成+命令詞的離線組合包,找到msc_64.dll復(fù)制三份出來(lái),一定要注

    2024年02月16日
    瀏覽(25)
  • Ubuntu20.04 使用Python實(shí)現(xiàn)全過程離線語(yǔ)音識(shí)別(包含語(yǔ)音喚醒,語(yǔ)音轉(zhuǎn)文字,指令識(shí)別,文字轉(zhuǎn)語(yǔ)音)

    ??因?yàn)槭诸^有一個(gè)項(xiàng)目,該項(xiàng)目需要在香橙派上實(shí)現(xiàn)語(yǔ)音控制,并且?guī)в姓Z(yǔ)音喚醒功能。簡(jiǎn)單來(lái)說(shuō),就是通過喚醒詞喚醒香橙派,然后說(shuō)出相關(guān)指令,香橙派去執(zhí)行指令。 ??但是,在弄香橙派的時(shí)候,自帶的麥克風(fēng)不好使了,單獨(dú)進(jìn)行麥克風(fēng)測(cè)試的時(shí)候是好使的,但是程

    2024年02月05日
    瀏覽(33)
  • 語(yǔ)音識(shí)別系列︱paddlespeech的開源語(yǔ)音識(shí)別模型測(cè)試(三)

    語(yǔ)音識(shí)別系列︱paddlespeech的開源語(yǔ)音識(shí)別模型測(cè)試(三)

    參考: 語(yǔ)音識(shí)別系列︱用python進(jìn)行音頻解析(一) 語(yǔ)音識(shí)別系列︱paddlehub的開源語(yǔ)音識(shí)別模型測(cè)試(二) 上一篇paddlehub是一些預(yù)訓(xùn)練模型,paddlespeech也有,所以本篇就是更新paddlespeech里面的模型。 參考:PaddleSpeech 一鍵預(yù)測(cè),快速上手Speech開發(fā)任務(wù) PaddleSpeech 是 all-in-one 的語(yǔ)

    2024年02月05日
    瀏覽(21)
  • 批量生成,本地推理,人工智能聲音克隆框架PaddleSpeech本地批量克隆實(shí)踐(Python3.10)

    云端煉丹固然是極好的,但不能否認(rèn)的是,成本要比本地高得多,同時(shí)考慮到深度學(xué)習(xí)的訓(xùn)練相對(duì)于推理來(lái)說(shuō)成本也更高,這主要是因?yàn)樗枰罅康臄?shù)據(jù)、計(jì)算資源和時(shí)間等資源,并且對(duì)超參數(shù)的調(diào)整也要求較高,更適合在云端進(jìn)行。 在推理階段,模型的權(quán)重和參數(shù)不再調(diào)

    2024年02月09日
    瀏覽(26)
  • 人工智能-語(yǔ)音識(shí)別技術(shù)paddlespeech的搭建和使用

    PaddleSpeech是百度飛槳(PaddlePaddle)開源深度學(xué)習(xí)平臺(tái)的其中一個(gè)項(xiàng)目,它基于飛槳的語(yǔ)音方向模型庫(kù),用于語(yǔ)音和音頻中的各種關(guān)鍵任務(wù)的開發(fā),包含大量基于深度學(xué)習(xí)前沿和有影響力的模型。PaddleSpeech支持語(yǔ)音識(shí)別、語(yǔ)音翻譯(英譯中)、語(yǔ)音合成、標(biāo)點(diǎn)恢復(fù)等應(yīng)用示例。

    2024年02月02日
    瀏覽(27)
  • 百度飛槳PP-YOLOE ONNX 在LabVIEW中的部署推理(含源碼)

    百度飛槳PP-YOLOE ONNX 在LabVIEW中的部署推理(含源碼)

    目錄 前言 一、什么是PP-YOLO 二、環(huán)境搭建 1、部署本項(xiàng)目時(shí)所用環(huán)境 2、LabVIEW工具包下載及安裝 三、模型的獲取與轉(zhuǎn)化 1、安裝paddle 2、安裝依賴的庫(kù) 3、安裝pycocotools 4、導(dǎo)出onnx模型 (1)導(dǎo)出推理模型 (2) 安裝paddle2onnx (3) 轉(zhuǎn)換成onnx格式 四、在LabVIEW實(shí)現(xiàn)PP-YOLOE的部署推

    2024年02月16日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包