3 个不稳定版本
0.2.0 | 2024 年 6 月 5 日 |
---|---|
0.1.1 | 2023 年 7 月 5 日 |
0.1.0 | 2023 年 7 月 5 日 |
#384 在 机器学习 中
每月 36 次下载
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 绑定上的出色工作。此软件包实际上仅在此基础上增加了两个功能:转码和下载模型。
表示感激
想要感谢这个库吗?只需点击下面的按钮并留下简短的意见。这会让我的心情大好 :)
依赖项
~6–41MB
~646K SLoC