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次下载

MIT许可

19KB
429 代码行

eSpeak NG播放库

Crates.io Version Crates.io Downloads docs.rs Build Status

此库提供了一个 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