blackrock-cio-said-bitcoin-could-reach-new-heights.jpg

“好吧,谷歌!”——用深度学习在 Python 中语音到文本 2 分钟

源节点: 1866555

这篇文章是作为 数据科学博客马拉松

介绍

您可能经常使用 谷歌助理 或Apple的 Siri 甚至 亚马逊的Alexa的 在网络上快速找到答案或简单地命令某事。 这些 AI 助手以理解我们的语音命令和执行所需任务而闻名。 他们会快速响应语音命令,例如“好的,谷歌。 冰岛的首都是哪里?” 或“嘿,Siri。 给我看看千层面的食谱。” 并显示准确的结果。 你有没有想过他们是怎么做到的? 今天,我们将构建一个非常简单的语音识别系统,以我们的声音为输入,并通过听到输入生成相应的文本。

语音到文本
图片1

TLDR 给我看代码!

如果你像我一样不耐烦,这实际上是可以通过一个 Python 文件快速复制、粘贴和执行的完整源代码。 确保有一个名为“my-audio.wav”的文件作为您的语音输入。 另外,请确保已安装所有库。

在本教程的后面部分,我们将讨论每一行的作用。

这是代码!

import torch import librosa import numpy as np import soundfile as sf from scipy.io import wavfile from IPython.display import Audio from Transformers import Wav2Vec2ForCTC, Wav2Vec2Tokenizer
tokenizer = Wav2Vec2Tokenizer.from_pretrained("facebook/wav2vec2-base-960h")
model = Wav2Vec2ForCTC.from_pretrained("facebook/wav2vec2-base-960h")
file_name = 'my-audio.wav'
data = wavfile.read(file_name) framerate = data[0] sounddata = data[1] time = np.arange(0,len(sounddata))/framerate input_audio, _ = librosa.load(file_name, sr=16000) input_values = tokenizer(input_audio, return_tensors="pt").input_values logits = model(input_values).logits Predicted_ids = torch.argmax(logits,dim=-1) 转录 = tokenizer.batch_decode(predicted_ids)[0] 打印(转录)

开始之前

请务必查看本教程的完整源代码 这个 Github 仓库.

Wav2Vec:革命性的模型

wave2vec | 语音转文字
图片2

我们将使用 波向量 — Facebook 最先进的语音识别方法。

Facebook 的研究人员将这种方法描述为:

世界上有数千种语言,其中许多语言有几种不同的方言,这对构建高质量的语音识别技术提出了巨大的挑战。 在许多可能的领域(阅读语音、电话语音等)获取每种方言和每种语言的资源根本不可行。 我们的新模型 wav2vec 2.0 使用自我监督通过从未标记的训练数据中学习来突破界限,从而为更多语言、方言和领域启用语音识别系统。 只需一小时的标记训练数据,wav2vec 2.0 在 LibriSpeech 基准测试的 100 小时子集上的表现就优于之前的最先进技术——使用的标记数据减少了 100 倍。

你去吧! Wav2Vec 是一种自监督模型,旨在为多种语言和方言创建语音识别系统。 由于训练数据很少(标记数量大约减少 100 倍),该模型已经能够胜过之前最先进的基准测试。

该模型与 BERT 一样,是通过预测掩蔽音频段的语音单元来训练的。 另一方面,语音音频是一种连续信号,可以捕获录音的许多特征,而没有被清晰地分割成单词或其他单位。 Wav2vec 2.0 通过学习 25 毫秒的基本单位来解决这个问题,以便学习高级上下文化表示。 然后利用这些单元来表征各种口语录音,从而增强 wav2vec 的鲁棒性。 通过将标记训练数据减少 100 倍,我们可以创建超越最佳半监督方法的语音识别算法。 由于自监督学习,Wav2vec 2.0 是机器学习模型的一部分,较少依赖标记输入。 自我监督有助于图像分类、视频理解和内容理解系统的进步。 该算法可能会促进各种语言、方言和领域以及当前系统的语音技术的进步。

选择我们的环境和库

我们将使用 PyTorch,用于此操作的开源机器学习框架。 同样,我们将使用 变压器,一个最先进的自然语言处理库,由 拥抱脸.

以下是您可能希望通过 pip 安装的所有要求的列表。 建议您将所有这些软件包安装在一个 虚拟环境 之前进行。

  1. Jupyter笔记本
  2. 火炬
  3. 利布罗萨
  4. 脾气暴躁的
  5. 声音文件
  6. 西皮
  7. IPython的
  8. 变压器

使用代码

打开您的 Jupyter 笔记本,同时激活包含上述所有基本库的虚拟环境。

加载笔记本后,创建一个新文件并开始导入库。

import torch import librosa import numpy as np import soundfile as sf from scipy.io import wavfile from IPython.display import Audio from Transformers import Wav2Vec2ForCTC, Wav2Vec2Tokenizer

现在我们已经成功导入了所有的库,让我们加载我们的标记器和模型。 我们将在此示例中使用预训练模型。 预训练模型是已经被其他人训练过的模型,我们可以在我们的系统中重用它。 我们要导入的模型是由 Facebook 训练的。

tokenizer = Wav2Vec2Tokenizer.from_pretrained("facebook/wav2vec2-base-960h")
model = Wav2Vec2ForCTC.from_pretrained("facebook/wav2vec2-base-960h")

这可能需要一些时间来下载。

完成后,您可以录制您的声音并将 wav 文件保存在您正在编写代码的文件旁边。您可以将您的音频命名为“my-audio.wav”。

file_name = 'my-audio.wav' 音频(文件名)

使用此代码,您可以在 Jupyter 笔记本中播放音频。

接下来:我们将加载我们的音频文件并检查我们的采样率和总时间。

data = wavfile.read(file_name) framerate = data[0] sounddata = data[1] time = np.arange(0,len(sounddata))/framerate print('Sampling rate:',framerate,'Hz')

此示例的结果可能与您的不同,因为您可能使用自己的音频。

采样率:44100Hz

这是为我的示例音频打印出来的。

我们必须将采样率转换为 16000 Hz,因为 Facebook 的模型接受此范围内的采样率。 我们将向 Librosa 寻求帮助,这是我们之前安装的一个库。

input_audio, _ = librosa.load(文件名, sr=16000)

最后,输入音频被馈送到分词器,然后由模型处理。 最终结果将存储在转录变量中。

input_values = tokenizer(input_audio, return_tensors="pt").input_values logits = model(input_values).logits Predicted_ids = torch.argmax(logits,dim=-1) 转录 = tokenizer.batch_decode(predicted_ids)[0] 打印(转录)

输出:

'深度学习是惊人的'

嗯,这正是我在 my-audio.wav 文件中记录的内容。

继续尝试录制您自己的演讲并重新执行最后一段代码。 它应该在几秒钟内工作。

作者简介:

你好呀! 我的名字是 Akash,我作为一名 Python 开发人员已经工作了 4 年多。 在我的职业生涯中,我开始在尼泊尔最大的工作门户网站担任初级 Python 开发人员, 梅洛乔布. 后来,我在尼泊尔第一家拼车公司从事数据科学和研究, 废话. 目前,我一直积极参与数据科学以及 Django 的 Web 开发。

您可以在以下位置找到我的其他项目:

https://github.com/akashadhikari

在 LinkedIn 上联系我

https://www.linkedin.com/in/akashadh/

电子邮箱: [电子邮件保护] | [电子邮件保护]

网站(在数据科学博客上工作):https://akashadhikari.github.io/

图像来源:

图 1 – https://www.bullfrag.com/how-to-program-google-assistant-commands-type-ok-google-turn-off-the-lights-in-10-minutes/

图 2 – https://www.bullfrag.com/how-to-program-google-assistant-commands-type-ok-google-turn-off-the-lights-in-10-minutes/

尾注:

感谢您的阅读!

我希望你喜欢阅读这篇文章。 如果您觉得它有用,也请在社交媒体上与您的朋友分享。 如有任何疑问、建议、建设性批评或任何其他讨论,请在评论中 ping 我这里,或者您可以直接通过电子邮件与我联系。

资料来源:https://www.analyticsvidhya.com/blog/2021/09/ok-google-speech-to-text-in-python-with-deep-learning-in-2-minutes/

时间戳记:

更多来自 分析维迪亚