• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      離線語(yǔ)音識(shí)別編程示例

      2018-12-21 17:56:24朱德平新疆烏魯木齊
      數(shù)碼世界 2018年9期
      關(guān)鍵詞:分詞搜索引擎示例

      朱德平 新疆烏魯木齊

      1.音頻處理

      語(yǔ)音識(shí)別前,需要根據(jù)語(yǔ)音識(shí)別API的要求,對(duì)原始音頻文件進(jìn)行預(yù)處理,下面主要介紹音頻編碼轉(zhuǎn)換和語(yǔ)音分割兩項(xiàng)功能。

      1.1 編碼轉(zhuǎn)換

      語(yǔ)音識(shí)別API一般對(duì)語(yǔ)音文件的編碼算法、聲道數(shù)、采樣頻率、量化比特等參數(shù)有要求,因此需要對(duì)原始語(yǔ)音文件進(jìn)行編碼轉(zhuǎn)換,可以利用FFmpeg或者Pydub實(shí)現(xiàn)。FFmpeg是一個(gè)跨平臺(tái)的音視頻錄制、轉(zhuǎn)換、流化工具,其音頻編碼轉(zhuǎn)換的命令示例:

      os.system("ffmpeg -i speech.mp3 -acodec pcm_s16le-ac 1 -ar 16000 speech.wav")

      Python語(yǔ)言中將speech.mp3轉(zhuǎn)換成單聲道、16K采樣率、16量化比特的wav文件。

      Pydub是Python的一個(gè)音頻庫(kù),提供了簡(jiǎn)單、易于使用的音頻編程接口,其中編碼轉(zhuǎn)換的示例:

      from pydub import AudioSegment

      speech = AudioSegment.from_mp3("speech.mp3")

      speech.export("speech.wav", format="wav",parameters=["-ac", "1", "-ar", "16000"])

      1.2 語(yǔ)音分割

      由于語(yǔ)音識(shí)別API通常對(duì)語(yǔ)音的時(shí)長(zhǎng)有限制,例如不能超過60s等,因此需要對(duì)語(yǔ)音文件進(jìn)行分割,一般采用VAD進(jìn)行分割。VAD(語(yǔ)音激活檢測(cè),又叫語(yǔ)音端點(diǎn)檢測(cè)),是指通過對(duì)語(yǔ)音信號(hào)和噪聲信號(hào)的分析,區(qū)別語(yǔ)音區(qū)域和非語(yǔ)音區(qū)域,利用VAD進(jìn)行語(yǔ)音分割的基本思路是將語(yǔ)音分割成時(shí)長(zhǎng)10-30ms的幀,判斷每一幀是否是語(yǔ)音信號(hào)。 WebRTC VAD是VAD的一個(gè)常用實(shí)現(xiàn),py-webrtcvad是它的Python包裝庫(kù),代碼示例:

      import webrtcvad

      vad = webrtcvad.Vad()

      sample_rate = 16000

      result=vad.is_speech(frame, sample_rate)

      其中frame是分割的幀,result為幀是否為語(yǔ)音的布爾值。

      2.語(yǔ)音識(shí)別

      百度AI開放平臺(tái)支持離線語(yǔ)音識(shí)別,要求音頻文件單聲道、采樣率8K或16K,16位量化比特,文件格式是pcm、wav等。語(yǔ)音時(shí)間最長(zhǎng)60s。代碼示例:

      from aip import AipSpeech

      aipSpeech = AipSpeech(APP_ID, API_KEY, SECRET_KEY)

      with open(file_path, 'rb') as file:

      speech_content = file.read()

      result = aipSpeech.asr(speech_content, 'pcm', 16000, {'dev_pid': 1536})

      if result["err_no"] == 0:

      print("識(shí)別成功,文本是:{}".format(result["result"][0]))

      else:

      print("識(shí)別出錯(cuò):{}".format(result["err_msg"]))

      其中APP_ID,、API_KEY,、SECRET_KEY注冊(cè)百度平臺(tái)和創(chuàng)建應(yīng)用時(shí)系統(tǒng)會(huì)創(chuàng)建和分配,file_path是語(yǔ)音文件名,dev_pid屬性設(shè)置語(yǔ)言類型,1536為普通話識(shí)別,1537為英語(yǔ)識(shí)別。識(shí)別結(jié)果result為Json結(jié)構(gòu)的數(shù)據(jù),其中result["err_no"]若為0,代表識(shí)別成功,result["result"]是識(shí)別的1-5個(gè)候選結(jié)果,若result["err_no"]為其它數(shù)字,則表示識(shí)別出錯(cuò),result["err_no"]為錯(cuò)誤碼。

      3.文本處理

      3.1 模糊匹配

      有些情況下,需要將識(shí)別出的語(yǔ)音文本和已有的文本進(jìn)行匹配,可以使用模糊匹配完成,一般使用Levenshtein編輯距離算法,Levenshtein距離是指兩個(gè)文本由一個(gè)轉(zhuǎn)換成另一個(gè)需要的最少編輯次數(shù),此處的編輯是指替換、插入和刪除操作。代碼示例:

      import Levenshtein

      max_distance = 30

      distance = Levenshtein.distance(text1, text2)

      if distance < max_distance:

      print("匹 配 成 功, Levenshtein距 離 是:{}".format(distance))

      else:

      print("匹 配 不 成 功, Levenshtein距 離 是:{}".format(distance))

      其中text1和text2是進(jìn)行匹配的文本,如果Levenshtein距離小于30,則認(rèn)為匹配成功,否則匹配失敗。

      3.2 中文分詞

      分詞就是將句子切分成一個(gè)一個(gè)詞匯,它是實(shí)現(xiàn)文本搜索、統(tǒng)計(jì)功能和自然語(yǔ)言處理等的基礎(chǔ),中文分詞的算法和庫(kù)都很多,這里介紹Jieba中文分詞庫(kù)。代碼示例:

      import jieba

      words = jieba.cut(text, cut_all=True)

      print("全模式:{} ".format(words)))

      words = jieba.cut(text, cut_all=False)

      print("精確模式模式:{} ".format(words)))

      words = jieba.cut_for_search(text)

      print("搜索引擎模式:{} ".format(words)))

      其中text為需要分解的文本,words為切分后的詞匯列表。分詞有三種分詞模式,精確模式、全模式、搜索引擎模式。精確模式是常用模式,適合文本分析,全模式是把所有可以成詞的詞匯都切分出來,搜索引擎模式會(huì)對(duì)長(zhǎng)詞再次切分,適用于搜索關(guān)鍵字切分。

      若需要對(duì)文本進(jìn)行進(jìn)一步的處理,可以使用NLP工具實(shí)現(xiàn)詞性標(biāo)注、命名實(shí)體識(shí)別、依存句法分析、語(yǔ)義角色標(biāo)注等自然語(yǔ)言處理功能。

      猜你喜歡
      分詞搜索引擎示例
      大還是小
      2019年高考上海卷作文示例
      常見單位符號(hào)大小寫混淆示例
      山東冶金(2019年5期)2019-11-16 09:09:22
      結(jié)巴分詞在詞云中的應(yīng)用
      “全等三角形”錯(cuò)解示例
      值得重視的分詞的特殊用法
      網(wǎng)絡(luò)搜索引擎亟待規(guī)范
      基于Nutch的醫(yī)療搜索引擎的研究與開發(fā)
      廣告主與搜索引擎的雙向博弈分析
      高考分詞作狀語(yǔ)考點(diǎn)歸納與疑難解析
      太康县| 邵东县| 武川县| 彭州市| 玉环县| 都匀市| 桃江县| 牟定县| 扶沟县| 沙洋县| 毕节市| 星子县| 兰西县| 茂名市| 沾益县| 高唐县| 奈曼旗| 新兴县| 双辽市| 贵港市| 喀喇| 百色市| 澳门| 永安市| 香格里拉县| 山西省| 濮阳县| 当阳市| 罗平县| 天津市| 比如县| 嘉善县| 固原市| 武夷山市| 莲花县| 阳原县| 榕江县| 普格县| 乌鲁木齐市| 新河县| 内乡县|