6个版本
0.1.5 | 2024年2月9日 |
---|---|
0.1.4 | 2024年1月26日 |
0.1.2 | 2023年11月22日 |
0.1.1 | 2022年8月3日 |
0.1.0 | 2022年7月19日 |
#300 在 音频
每月 25次下载
19KB
429 代码行
eSpeak NG播放库
此库提供了一个 rodio::Source
,可用于生成eSpeak音频。它支持列出和设置语音,触发边界或标记事件的回调,以及全面控制其他eSpeak参数,如速率和音调。请参阅示例和测试以了解用法。
文档
文档 包含一些用法示例,以及在此存储库中的测试和代码示例。
许可
许可协议为 (MIT许可)。
lib.rs
:
eSpeak NG播放库
此库的主要用途是创建和配置一个 Speaker
,它反过来创建一个 SpeakerSource
,该源实现了 rodio::Source
。
例如,以下是如何合成一个简单的短语
use rodio::{OutputStream, Sink};
let speaker = espeaker::Speaker::new();
let source = speaker.speak("Hello, world!");
let (_stream, stream_handle) = OutputStream::try_default().unwrap();
let sink = Sink::try_new(&stream_handle).unwrap();
sink.append(source);
sink.sleep_until_end();
您可以通过 Speaker::params
调整扬声器的参数。每次更改都只会影响指定的扬声器。这与eSpeak NG的API不同,其中参数更改是全局的
let mut speaker = espeaker::Speaker::new();
speaker.params.pitch = Some(400);
speaker.params.rate = Some(80);
此库还支持回调,可用于在说出某些语音地标(如单词或句子)时使用。使用 SpeakerSource::with_callback
方法创建一个新的源,该源分配回调
let mut speaker = espeaker::Speaker::new();
speaker.params.rate = Some(280);
let source = speaker.speak("Hello world, goodbye!");
let source = source.with_callback(move |evt| match evt {
espeaker::Event::Word(start, _len) => {
println!("'Word at {}'", start);
}
espeaker::Event::Sentence(_) => (),
espeaker::Event::End => {
println!("'End!");
}
});
依赖关系
~2–33MB
~513K SLoC