好玩的github專案-golang實現的gmm-ubm演算法的說話人識別(聲紋識別)引擎
轉自github使用者liuxp0827
簡介
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
}
Github地址:https://github.com/liuxp0827/govpr
相關文章
- govpr,基於golang實現的gmm-ubm演算法的說話人識別(聲紋識別)引擎Golang演算法
- govpr--golang實現的gmm-ubm演算法說話人識別引擎Golang演算法
- 虹膜識別和眼紋識別的區別 虹膜識別和眼紋識別哪個好?
- 人工智慧界的逃犯剋星不止人臉識別,聲紋識別也能助力公安追逃人工智慧
- 基於MATLAB的指紋識別演算法模擬實現Matlab演算法
- 只對你有感覺:谷歌用聲紋識別實現定向人聲分離谷歌
- 人臉識別檢測專案實戰
- 別隻盯著谷歌亞馬遜,美國國安局才是聲紋識別的「無形之手」谷歌亞馬遜
- 基於TensorflowLite的人聲識別在端上的實現
- CMS指紋識別
- android 簡單實現指紋識別功能Android
- C++ LibCurl實現Web指紋識別C++Web
- 谷歌再獲語音識別新進展:利用序列轉導來實現多人語音識別和說話人分類谷歌
- 知物由學 | 聽聲辨人,看聲紋識別技術如何保障內容安全?
- 聲紋識別前景可好,初創公司聲揚科技獲千萬融資
- GitHub車牌檢測識別專案調研Github
- 如何理解並實現一個簡單的人臉識別演算法(下):人臉識別演算法
- Mars演算法實踐——人臉識別演算法
- 除了菊紋識別,AI還有哪些奇奇怪怪的識別能力?AI
- 微軟牛津專案人臉識別API初探微軟API
- 工信部:支援構建基於指紋識別、人臉識別等技術的網路身份認證
- 如何設計APP的指紋識別功能APP
- 人臉識別專案打包成exe的過程遇到的問題
- 人臉識別影像的模糊度判別演算法的最佳化演算法
- github上一個好玩的專案Github
- 生物特徵識別之指紋識別,偽造,指紋裝置缺陷設計特徵
- 機器學習實戰-SVM模型實現人臉識別機器學習模型
- 純前端實現人臉識別-提取-合成前端
- 不用人臉識別又好玩的手遊 不用實名認證的大型遊戲遊戲
- Android 指紋識別,指紋支付demoAndroid
- Python實現AI影像識別-身份證識別PythonAI
- 一文教你如何快速實現聲音識別
- 網易 AI Lab 斬獲全球頂級聲紋識別競賽冠軍AI
- 聲紋識別技術五大發展趨勢總結
- Python 超簡單實現人類面部情緒的識別Python
- Python實現人臉識別功能,face_recognition的使用 | 機器學習Python機器學習
- 人臉識別相關開源專案彙總
- 如何識別檔案的真假