govpr--golang實現的gmm-ubm演算法說話人識別引擎
簡介
govpr是golang 實現的基於 GMM-UBM 說話人識別引擎(聲紋識別),可用於語音驗證,身份識別的場景. 目前暫時僅支援漢語數字的語音,語音格式為wav格式(位元率16000,16bits,單聲道)
安裝
go get github.com/liuxp0827/govpr
示例
如下是一個簡單的示例. 可跳轉至 example 檢視詳細的例子,示例中的語音為純數字8位數字.語音驗證後得到一個得分,可設定閾值來判斷驗證語音是否為註冊訓練者本人.
package main
import (
"github.com/liuxp0827/govpr"
"github.com/liuxp0827/govpr/log"
"github.com/liuxp0827/govpr/waveIO"
"io/ioutil"
)
type engine struct {
vprEngine *govpr.VPREngine
}
func NewEngine(sampleRate, delSilRange int, ubmFile, userModelFile string) *engine {
return &engine{
vprEngine: govpr.NewVPREngine(sampleRate, delSilRange, ubmFile, userModelFile),
}
}
func (this *engine) DestroyEngine() {
this.vprEngine = nil
}
func (this *engine) TrainSpeech(buffers [][]byte) error {
var err error
count := len(buffers)
for i := 0; i < count; i++ {
err = this.vprEngine.AddTrainBuffer(buffers[i])
if err != nil {
log.Error(err)
return err
}
}
defer this.vprEngine.ClearTrainBuffer()
defer this.vprEngine.ClearAllBuffer()
err = this.vprEngine.TrainModel()
if err != nil {
log.Error(err)
return err
}
return nil
}
func (this *engine) RecSpeech(buffer []byte) error {
err := this.vprEngine.AddVerifyBuffer(buffer)
defer this.vprEngine.ClearVerifyBuffer()
if err != nil {
log.Error(err)
return err
}
err = this.vprEngine.VerifyModel()
if err != nil {
log.Error(err)
return err
}
Score := this.vprEngine.GetScore()
log.Infof("vpr score: %f", Score)
return nil
}
func main() {
log.SetLevel(log.LevelDebug)
vprEngine := NewEngine(16000, 50, "../ubm/ubm", "model/test.dat")
trainlist := []string{
"wav/train/01_32468975.wav",
"wav/train/02_58769423.wav",
"wav/train/03_59682734.wav",
"wav/train/04_64958273.wav",
"wav/train/05_65432978.wav",
}
trainBuffer := make([][]byte, 0)
for _, file := range trainlist {
buf, err := loadWaveData(file)
if err != nil {
log.Error(err)
return
}
trainBuffer = append(trainBuffer, buf)
}
verifyBuffer, err := waveIO.WaveLoad("wav/verify/34986527.wav")
if err != nil {
log.Error(err)
return
}
vprEngine.TrainSpeech(trainBuffer)
vprEngine.RecSpeech(verifyBuffer)
}
func loadWaveData(file string) ([]byte, error) {
data, err := ioutil.ReadFile(file)
if err != nil {
return nil, err
}
// remove .wav header info 44 bits
data = data[44:]
return data, nil
}
相關文章
- govpr,基於golang實現的gmm-ubm演算法的說話人識別(聲紋識別)引擎Golang演算法
- 好玩的github專案-golang實現的gmm-ubm演算法的說話人識別(聲紋識別)引擎GithubGolang演算法
- Mars演算法實踐——人臉識別演算法
- 如何理解並實現一個簡單的人臉識別演算法(下):人臉識別演算法
- 機器學習實戰-SVM模型實現人臉識別機器學習模型
- 純前端實現人臉識別-提取-合成前端
- 基於MindSpore實現BERT對話情緒識別情緒識別
- 電話機器人是如何實現對話的?機器人
- 谷歌再獲語音識別新進展:利用序列轉導來實現多人語音識別和說話人分類谷歌
- 基於Android平臺實現人臉識別Android
- 如何用Excel 9步實現CNN人臉識別ExcelCNN
- 利用Wi-Fi訊號實現人體識別
- 人臉識別技術,讓科幻成為現實
- Python 超簡單實現人類面部情緒的識別Python
- Python實現人臉識別功能,face_recognition的使用 | 機器學習Python機器學習
- matlab實現人臉識別(數學基礎原理)Matlab
- 手把手教你實現人臉識別,有手就行
- 64行程式碼實現簡單人臉識別行程
- 人臉識別技術,將電影變成現實
- 人臉識別影像的模糊度判別演算法的最佳化演算法
- 基於MATLAB的指紋識別演算法模擬實現Matlab演算法
- 利用OpenCV和深度學習來實現人類活動識別OpenCV深度學習
- 【opencv3】 svm實現手寫體與人臉識別OpenCV
- 虹軟人臉識別ArcSoft3.0NodeJs 版本實現NodeJS
- 【ROS】OpenCV+ROS 實現人臉識別(Ubantu16.04)ROSOpenCV
- 模式識別hw2-------基於matconvnet,用CNN實現人臉圖片性別識別模式CNN
- 美軍開發遠端人臉識別系統,實現1公里內目標識別
- 語音識別的最終目標是真正實現人機互動
- Python實現AI影像識別-身份證識別PythonAI
- 妙招:使用Python實現圖片在人臉識別並顯示Python
- 手把手教你用 1 行命令實現人臉識別
- Crystal 實現文字識別程式
- 【基於PCA的人臉識別演算法】從QR分解到PCA,再到人臉識別PCA演算法
- 人臉識別檢測專案實戰
- 從好友推薦演算法說起演算法
- 如何快速實現人臉識別通道?一文了解具體技巧
- 用圖靈機器人實現的兩個機器人對話聊天圖靈機器人
- “這個裝置憑藉人臉識別或者語音播報,實現無人操作。