#dictionary #cmudict #pronunciation #fork #improved #original #cmu-sphinx

cmudict-fast

CMUSphinx发音字典库的更新和改进分支

8个版本 (4个破坏性更新)

0.8.0 2021年2月27日
0.7.2 2021年2月27日
0.6.0 2021年2月26日
0.5.0 2021年2月26日
0.4.1 2021年2月26日

#1379解析器实现


用于 ashpaper-plus

MIT/Apache

1MB
687

CMUSphinx发音字典

这是从原始 rust库中获取发音的CMUSphinx发音字典的分支。

⚠️ 从0.6.0版本开始,与原始crate不兼容API。0.5.0或更早版本与API大部分兼容,但明显没有下载实用程序功能。

变更日志

  • 0.8.0
    • 为cmudict实现FromStr
  • 0.7.1
    • 更新readme中的版本 🤦
  • 0.7.0
    • 添加了在"serialization"功能下序列化和反序列化的能力
  • 0.6.0
    • 更改get函数以返回所有可能的发音的切片
  • 0.5.0
    • cmudict_corecmudict合并到一个crate中
    • 添加了丢失在混乱中的回文函数
  • 0.4.1
    • 修复了将固定的readme上传到crates.io的补丁
  • 0.4.0
    • 从已弃用的failure crate切换到基于thiserror的错误
    • 在cargo配置中切换到rust 2018
    • 删除了下载实用程序函数
    • 删除了不再需要或已弃用的许多依赖项
    • 修复了由于新内部结构导致的挂起查找bug
    • 更改内部结构,以便文件I/O不需要每次查找(因此简化了它们)

这些更改中的最后一个就是名字的来源 - 由于整个字典被加载到volitile内存中,每个单独的查找都比原始crate快得多(平均应为O(1),最坏情况为O(n))。当然,缺点是创建对象需要更长的时间,并且使用更多的内存,但对我来说最初创建此应用时查找时间是关键的。

安装

要在您的rust项目中使用,请将以下内容添加到您的Cargo.toml

[dependencies]
cmudict-fast = "0.8"

用法

要使用字典,您需要获取一个 Cmudict 结构体的实例

use cmudict_fast::Cmudict;

fn main() {
  let dict = Cmudict::new("./path/to/a/cmudict/file").expect("Couldn't make Cmudict");
}

您可以像这样检索单词的发音

use cmudict_fast::Cmudict;

fn main() {
  let dict = Cmudict::new("path/to/cmudict").expect("Couldn't get/make Cmudict");
  let word = dict.get("apple").unwrap().pronunciation();
  println!("{:?}", word); // &[Symbol::AE(Stress::Primary), Symbol::P, Symbol::AH(Stress::None), Symbol::L]
}

依赖项