熱線電話:13121318867

登錄
首頁大數據時代關于python語音識別,那還需要掌握這些內容
關于python語音識別,那還需要掌握這些內容
2020-07-22
收藏

我們都知道python是一款功能強大的數據分析工具,而且使用起來相對簡單,被廣泛應用于數據分析,web開發,人工智能等很多領域。語音識別,也叫作自動語音識別,其是以計算機自動將人類的語音內容轉換為相應文字為目標。語音識別的應用范圍,包括、簡單的聽寫數據錄入,語音撥號、語音導航、室內設備控制、語音文檔檢索等等。當語言識別遇上python,其實現將會變得更簡單,快捷。今天小編與大家分享的就是python語音識別的一些基礎知識,希望對大家有所幫助。

一、python語音識別原理

語音識別的首要任務是語音,通常通過麥克風,語音就能夠從物理聲音轉換為電信號,之后再被轉換為數據。語音一旦被數字化,就能夠適用若干模型,最終轉換為文本。

目前現代大多數語音識別系統,都是基于隱馬爾可夫模型(HMM)。這一模型的工作原理為:語音信號在極短的時間尺度上,例如10 毫秒,能夠被近似為靜止過程,也就是一個統計特性不隨時間變化的過程。而python語音識別技術, 一些服務能夠通過 API 在線使用,并且大部分都提供了 Python SDK。

二、選擇python 語音識別包

apiai

google-cloud-speech

pocketsphinx

SpeechRcognition

watson-developer-cloud

wit

其中, SpeechRcognition為最便捷的一種。

因為語音識別首先需要輸入音頻,而 SpeechRecognition 檢索音頻輸入是極為簡便快捷的,我們并不需要構建訪問麥克風,也不需要從頭開始處理音頻文件的腳,SpeechRecognition 僅僅幾分鐘就能自動完成檢索并運行。

SpeechRecognition 庫能夠滿足幾種主流語音 API ,靈活性非常高。例如: Google Web Speech API 支持硬編碼到 SpeechRecognition 庫中的默認 API 密鑰,不需要注冊就能直接使用。因此,SpeechRecognition 由于具有靈活性和易用性的優點,成為編寫 Python 程序的最佳選擇。

三、python 語音識別

import numpy as np
import scipy.io.wavfile as wf
import python_speech_features as sf
import hmmlearn.hmm as hl

# 提取樣本信息
train_x,train_y = [],[]
mfccs = np.array([])
for sound_files in files_list:
    for sound_file in sound_files:
        sample_rate,sigs = wf.read(sound_file)
        mfcc = sf.mfcc(sigs,sample_rate)
        # 將mfcc矩陣添加到mfccs中
        if len(mfccs) == 0:
            mfccs == mfcc
        else:
            mfccs = np.append(mfccs,mfcc)
    # 將mfccs矩陣列表添加到訓練集中  
    train_x.append(mfccs)
# 最終的train_x len(sound_files)個特征的矩陣
# train_y存的是特征標簽,比如:apple,banana,pear

# 構建并訓練隱馬模型
models = {}
for mfccs,label in zip(train_x,train_y):
    model = hl.GaussianHMM(
        n_components = 4, covariance_type = 'diag',
        n_iter = 1000
    )
    models[label] = model.fit(mfccs)

# 同樣方法獲取測試集數據
# 測試
pred_y = []
for mfccs in test_x: 
    # 驗證每個模型對當前mfcc的匹配度得分
    best_score, best_label = None, None
    for label, model in models.items():
        score = model.score(mfccs)
        if (best_score is None) or (best_score < score):
            best_score = score
            best_label = label
    pred_y.append(best_label)

print(test_y)
print(pred_y)

數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢