跳到主要内容

语音转文本

语音转文本模型将声音转换为文本 - 这对于 AI 助手、听写、语音命令和自动笔记等功能至关重要。在这里,我们将了解如何在边缘设备上运行语音转文本。

speech

OpenAI 的 Whisper

Whisper 是 OpenAI 在 2022 年发布的语音模型。与之前的方法相比,其开发过程中使用了更多样化的训练数据,从而提高了对口音、背景噪音和专业术语的识别能力。

我们有使用 Whisper.cpp 运行 Whisper 的详细教程,请参考 Whisper 教程。 如果您想运行流式 Whisper,请参考 Whisper 流式教程

Useful Sensors 的 Moonshine

我们使用 Moonshine - 一个为资源受限设备构建的语音转文本模型。Moonshine 提供快速、准确的结果,其词错误率 (WER) 与 OpenAI 的 Whisper 相似,但计算量减少 5 倍。

Moonshine 的计算需求随音频长度变化。较短的片段运行速度更快。例如,它处理 10 秒片段的速度比 Whisper 快 5 倍,同时保持相似或更低的 WER。

Moonshine 有两种尺寸:

  • Tiny:约 190 MB
  • Base:约 400 MB

您也可以从这里下载量化后的 base 版本 Moonshine 模型:Moonshine HuggingFace

转录音频文件

备注

本指南假设您已经熟悉 Astra 开发板的设置。如果还没有,请参考设置教程

信息

本快速指南适用于所有 SL16xx 开发板。虽然推理性能可能有所不同,但所有 Astra SL 系列处理器的步骤都相同。

完成先决条件后,运行以下命令来转录音频文件 jfk.wav(该文件在您的开发板上):

python3 -m speech_to_text.moonshine 'samples/jfk.wav'

输出将是音频中语音的转写文本:

And so my fellow Americans ask not what your country can do for you ask what you can do for your country

实时字幕

使用 USB 麦克风(网络摄像头的麦克风/耳机)运行实时字幕:

python3 -m speech_to_text.pipeline

此命令开始实时转写输入的音频。按 CTRL + C 退出。

管道

SpeechToTextPipeline 示例可以用作任何使用人类语音作为输入的应用程序的简单输入流,每次检测到语音时都会调用处理函数:

from speech_to_text.pipeline import SpeechToTextPipeline

def handle_results(text, inference_time):
if text:
print(f"{text} {inference_time*1000:.0f}")

pipe = SpeechToTextPipeline(
model="base",
handler=handle_results,
echo=False
)

pipe.run()