语音识别-语言模型

本文详细介绍了n-gram语言模型在语音识别中的应用,包括语言模型的目的、n-gram概念、数据平滑技术(如加法平滑、Good-Turing平滑、线性插值平滑和Katz平滑)以及解码算法。同时推荐了一些开源语言模型工具和数据集。

1. 语言模型的目的

提到语言模型,给一个大家最熟悉的使用场景就是输入法,智能拼音输入法,打出一串拼音,直接给出了合适的句子,即使不是你想要的,但确实是符合语法习惯的,例如,你的名字叫“福贵”你输入了“fugui”,出来的可能是“富贵”,但不会出来“抚跪”,这就是语言模型的功劳!~~~~

一句话,语音识别中语言模型的目的就是根据声学模型输出的结果,给出概率最大的文字序列!~~~

2. n-gram语言模型

1)n-gram概念

            p(S)=p(w1,w2,w3,w4,w5,…,wn)

       =p(w1)p(w2|w1)p(w3|w1,w2)...p(wn|w1,w2,...,wn-1)//链规则

p(S)被称为语言模型,即用来计算一个句子概率的模型。

那么,如何计算p(wi|w1,w2,...,wi-1)呢?最简单、直接的方法是直接计数做除法,如下:

p(wi|w1,w2,...,wi-1) = p(w1,w2,...,wi-1,wi) / p(w1,w2,...,wi-1)

但是,这里面临两个重要的问题:数据稀疏严重;参数空间过大,无法实用。

基于马尔科夫假设(Markov Assumption):下一个词的出现仅依赖于它前面的一个或几个词。

  • 假设下一个词的出现依赖它前面的一个词,则有:

p(S)=p(w1)p(w2|w1)p(w3|w1,w2)...p(wn|w1,w2,...,wn-1)

      =p(w1)p(w2|w1)p(w3|w2)...p(wn|wn-1)   // bigram

  • 假设下一个词的出现依赖它前面的两个词,则有:

p(S)=p(w1)p(w2|w1)p(w3|w1,w2)...p(wn|w1,w2,...,wn-1)

      =p(w1)p(w2|w1)p(w3|w1,w2)...p(wn|wn-1,wn-2)  // trigram 

那么,我们在面临实际问题时,如何选择依赖词的个数,即n。当n取1、2、3时,n-gram模型分别称为unigram、bigram和trigram语言模型。

  • 更大的n:对下一个词出现的约束信息更多,具有更大的辨别力
  • 更小的n:在训练语料库中出现的次数更多,具有更可靠的统计信息
在Python中,有多种可用于语音识别的大语言模型,以下为你介绍一些常见的模型及其使用方法和相关库: ### Whisper Whisper是OpenAI开发的一个自动语音识别(ASR)系统,它在多语言语音识别等任务上表现出色。可以使用`whisper`库来调用该模型。 安装方式: ```bash pip install git+https://github.com/openai/whisper.git ``` 使用示例代码: ```python import whisper # 加载模型 model = whisper.load_model("base") # 进行语音识别 result = model.transcribe("audio.mp3") print(result["text"]) ``` ### SpeechBrain SpeechBrain是一个用于语音技术的开源深度学习工具包,它提供了预训练的语音识别模型。 安装方式: ```bash pip install speechbrain ``` 使用示例代码: ```python import torchaudio from speechbrain.pretrained import EncoderDecoderASR # 加载预训练模型 asr_model = EncoderDecoderASR.from_hparams(source="speechbrain/asr-crdnn-rnnlm-librispeech", savedir="pretrained_models/asr-crdnn-rnnlm-librispeech") # 加载音频文件 audio_file = 'your_audio_file.wav' signal, fs = torchaudio.load(audio_file) # 进行语音识别 predicted_words, predicted_tokens = asr_model.transcribe_batch(signal) print(predicted_words) ``` ### Hugging Face Transformers中的模型 Hugging Face的Transformers库包含了很多可用于语音识别的预训练模型,如Wav2Vec2等。 安装方式: ```bash pip install transformers ``` 使用示例代码: ```python from transformers import Wav2Vec2ForCTC, Wav2Vec2Processor import torch import librosa # 加载处理器和模型 processor = Wav2Vec2Processor.from_pretrained("facebook/wav2vec2-base-960h") model = Wav2Vec2ForCTC.from_pretrained("facebook/wav2vec2-base-960h") # 加载音频文件 audio_input, sr = librosa.load("audio.wav", sr=16000) # 预处理音频 input_values = processor(audio_input, return_tensors="pt").input_values # 进行语音识别 logits = model(input_values).logits predicted_ids = torch.argmax(logits, dim=-1) transcription = processor.decode(predicted_ids[0]) print(transcription) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

机器灵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值