#markup-language #speech-synthesis #parser #tags #text-to-speech #xml #ssml

ssml-parser

一个用于解析语音合成标记语言的crate

1 个不稳定版本

0.1.4 2024年3月28日

#1257 in 文本处理

MIT/Apache

165KB
3K SLoC

SSML解析器

这个crate用于处理解析SSML(语音合成标记语言)。其主要目标是便于开发TTS(文本到语音)和利用合成音频的应用。对于编写XML的功能有限,并且在易用性方面有待改进。

目前它包含SSML 1.1规范的完整实现,包括自定义标签。自定义标签内的文本默认为可合成的,但在提取文本时可以更改此行为。

以下是一个简单的示例

use ssml_parser::parse_ssml;

let ssml = r#"<?xml version="1.0"?>
   <speak version="1.1"
          xmlns="http://www.w3.org/2001/10/synthesis"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://www.w3.org/2001/10/synthesis
                      http://www.w3.org/TR/speech-synthesis11/synthesis.xsd"
          xml:lang="en-US">
     <p>
       <s>You have 4 new messages.</s>
       <s>The first is from Stephanie Williams and arrived at <break/> 3:45pm.
       </s>
       <s>
         The subject is <prosody rate="20%">ski trip</prosody>
       </s>
     </p>
   </speak>"#;

let result = parse_ssml(ssml).unwrap();

// We can now see the text with tags removed:
println!("{}", result.get_text());

// And can loop over all the SSML tags and get their character indexes:
for tag in result.tags() {
   println!("{:?}", tag);
}

依赖项

~8.5MB
~148K SLoC