#whisper #machine-learning #transcription #openai #cpp-bindings

mutter

Whisper.cpp 机器学习转录库的易于使用的绑定!

3 个不稳定版本

0.2.0 2024 年 6 月 5 日
0.1.1 2023 年 7 月 5 日
0.1.0 2023 年 7 月 5 日

#384机器学习

每月 36 次下载

MIT/Apache

450KB
365

Mutter

Mutter 是一个 Rust 库,使得使用 OpenAI Whisper 模型进行转录变得简单。

use mutter::{Model, ModelType};

let model = Model::download(&ModelType::BaseEn).unwrap();
let mp3: Vec<u8> = download_mp3();
let transcription = model.transcribe_audio(mp3, false, false, None).unwrap();
println!("{}", transcription.as_text());
println!("{}", transcription.as_srt());

编解码器

Mutter 支持Rodio(音频后端)所支持的所有编解码器。

  • MP3 (Symphonia)
  • WAV (Hound)
  • OGG Vorbis (lewton)
  • FLAC (claxon)

或者,启用 minimp3 功能以使用 minimp3 后端。

您还可以启用这些功能中的任何一个,以启用可选的 symphonia 后端。

symphonia-aac = ["rodio/symphonia-aac"]
symphonia-all = ["rodio/symphonia-all"]
symphonia-flac = ["rodio/symphonia-flac"]
symphonia-isomp4 = ["rodio/symphonia-isomp4"]
symphonia-mp3 = ["rodio/symphonia-mp3"]
symphonia-vorbis = ["rodio/symphonia-vorbis"]
symphonia-wav = ["rodio/symphonia-wav"]

关于此软件包

此软件包在很大程度上是对 whisper-rs 的薄包装,它简单地打开了任何文件格式的转录(它通过 rodio 处理转换)。Whisper-rs 负责与 Whisper.cpp 库的实际绑定。我编写这个软件包是因为我不想每次想在新的 Rust 库中使用 Whisper 时都重新实现转换和重新编码到 16 位单声道 PCM WAV,而我的初始实现依赖于目标设备上存在 ffmpeg,这并不兼容。虽然目标受 whisper-rs 和 whisper.cpp 支持的目标限制,而 ffmpeg 相当通用,但我希望尽可能实现便携性。此外,我所在的大学的计算集群默认没有 FFmpeg。

哦,我还添加了一个下载函数,该函数将在运行时加载模型。请注意,模型的大小可能达到 3GB!

转码

此软件包依赖于 rodio 执行转码。为了减少背景噪音并优化对人类语音的处理,它还应用了 200Hz 的高通滤波器和 3000Hz 的低通滤波器。我想应用更先进的语音滤波器,如 FFmpeg 的 arnndn,但无法在保持简单性的 Rodio 生态系统中做到这一点。

未来工作

我非常希望扩展此软件包以具有更先进的降噪功能。除此之外,我还想探索对音频的更多有意见的修改,例如实现 VAD,但我还没有在生态系统中找到任何软件包(并且如果找到了,我可能也没有时间实现它)。

致谢

@tazz4843 为其在 whisper-rs 绑定上的出色工作。此软件包实际上仅在此基础上增加了两个功能:转码和下载模型。

表示感激

想要感谢这个库吗?只需点击下面的按钮并留下简短的意见。这会让我的心情大好 :)

Click me to show appreciation

依赖项

~6–41MB
~646K SLoC