Whisper 是一种自动语音识别模型,基于从网络上网络的 680,000 小时多措辞数据进行演习。
根据 OpenAI的先容,该模型对口音、背景噪音和技能措辞具有很好的鲁棒性。
此外,它还支持 99 种不同措辞的转录和从这些措辞到英语的翻译。

whisper语音识别系统

虽然Open AI开源的whisper语音识别系统,可以识别出不同的语音,且同样可以识别出语音的语种,但是whisper紧张运用在语音识别系统上面,且我们运行whisper系统须要大型的模型。
当我们仅仅来识别不同的措辞笔墨,且要识别出措辞笔墨的语种时,我们可以利用小型的模型来识别,比如langid,fasttext等等。

豫php639基于fasttext与langid文本语种辨认的python代码实现 Python

langid文本语种识别

在Facebook发布fasttext之前,比较著名的语种识别库是langid,langid是一个小型的语种识别库,其模型只有2.5MB的大小,精度已经达到了91.3以上,虽然模型较小,但是功能确实是比较强大,且可以支持97种的文本语种检测。

利用langid十分大略,我们只须要利用如下代码安装利用即可

pip install langidlangid

第一步首先是利用pip安装langid即可

然后在cmd命令行中直接输入langid,软件会提示须要输入的文本,这时候,我们直接输入不同语种的文本,langid会自动检测出文本的语种,并显示。

langid在如下数据集上面进行演习:JRC-AcquisClueWeb 09WikipediaReuters RCV2Debian i18nlangid支持的97个语种:af, am, an, ar, as, az, be, bg, bn, br, bs, ca, cs, cy, da, de, dz, el, en, eo, es, et, eu, fa, fi, fo, fr, ga, gl, gu, he, hi, hr, ht, hu, hy, id, is, it, ja, jv, ka, kk, km, kn, ko, ku, ky, la, lb, lo, lt, lv, mg, mk, ml, mn, mr, ms, mt, nb, ne, nl, nn, no, oc, or, pa, pl, ps, pt, qu, ro, ru, rw, se, si, sk, sl, sq, sr, sv, sw, ta, te, th, tl, tr, ug, uk, ur, vi, vo, wa, xh, zh, zu

当然,我们也可以利用python代码来实现langid的文本语种检测

import langidlangid.classify("This is a test")('en', -54.41310358047485)

当然在利用langid之前,我们须要安装langid,并利用import来导入langid库

末了利用classify函数来进行文本的语种检测,脚步会打印出识别语种的iso代码,我们可以根据语种ISO标准来索引识别出来的语种。

当然,为了加快模型的预测韶光,我们可以指定几个语种,让模型从指定的语种中来进行语种的预测。

import langidlangid.classify("I do not speak english")('en', 0.57133487679900674)langid.set_languages(['de','fr','it'])langid.classify("I do not speak english")('it', 0.99999835791478453)langid.set_languages(['en','it'])langid.classify("I do not speak english")('en', 0.99176190378750373)

更多利用技巧可以参考GitHub开源地址

https://github.com/saffsd/langid.py

fasttext文本语种识别

fasttext是一个进行文本分类,识别以及单词编码的文本操作库,我们可以利用fasttext进行单词的编码也是我们前期先容transformer模型的embedding操作,我们可以通过fasttext来进行单词的word embedding操作。

当然fasttext也可以进行文本的分类操作,且同样可以进行文本的语种分类操作。
下图列举了fasttext在语种分类上面与langid的差异。
就算是fasttext small小模型,其速率与精度都大大超过了langid模型。

fasttext与langid的模型对吧

不仅在模型速率与精度的差异,其fasttext的文本语种检测数量更是达到了176种的语种识别

https://fasttext.cc/docs/en/language-identification.htmllid.176.bin, which is faster and slightly more accurate, but has a file size of 126MB ;lid.176.ftz, which is the compressed version of the model, with a file size of 917kB.支持的176个语种如下:af als am an ar arz as ast av az azb ba bar bcl be bg bh bn bo bpy br bs bxr ca cbk ce ceb ckb co cs cv cy da de diq dsb dty dv el eml en eo es et eu fa fi fr frr fy ga gd gl gn gom gu gv he hi hif hr hsb ht hu hy ia id ie ilo io is it ja jbo jv ka kk km kn ko krc ku kv kw ky la lb lez li lmo lo lrc lt lv mai mg mhr min mk ml mn mr mrj ms mt mwl my myv mzn nah nap nds ne new nl nn no oc or os pa pam pfl pl pms pnb ps pt qu rm ro ru rue sa sah sc scn sco sd sh si sk sl so sq sr su sv sw ta te tg th tk tl tr tt tyv ug uk ur uz vec vep vi vls vo wa war wuu xal xmf yi yo yue zh

关于fasttext的文本分类与单词embedding操作,这里不作过多的先容,可以参考fasttext的官方文档进行操作

https://fasttext.cc官方教程比较详细,可以进行参考学习

这里,我们紧张先容一下基于fasttext的176个文本语种识别的python代码实现过程

pip install fasttexthttps://fasttext.cc/docs/en/language-identification.htmllid.176.bin

首先我们须要利用pip来安装fasttext库,并到fasttext开源地址高下载其文本语种识别的演习模型lid.176.bin文件

import fasttextmodel = fasttext.load_mode('lid.176.bin')text = 'this is the fasttext test'predict = model.predict(text,k=1)>>_lable_en

我们直策应用load_mode函数来加载预演习模型,然后利用model模型的predict来进行文本语种的预测操作,这里的参数k=1,代表是选择概率最大的一个语种。
运行代码后,模型会输出预测的文本语种。

文本语种ISO附录

语种ISO简写参考如下链接https://www.loc.gov/standards/iso639-2/php/code_list.php

ISO 639-2 Code

ISO 639-1 Code

English name of Language

French name of Language

German name of Language

aar

aa

Afar

afar

Danakil-Sprache

abk

ab

Abkhazian

abkhaze

Abchasisch

asm

as

Assamese

assamais

Assamesisch

eng

en

English

anglais

Englisch

chi (B)zho (T)

zh

Chinese

chinois

Chinesisch

zul

zu

Zulu

zoulou

Zulu-Sprache