Spaces:
Running
Running
| import pytest | |
| from lxml import etree | |
| from modules.ssml_parser.SSMLParser import ( | |
| create_ssml_parser, | |
| SSMLSegment, | |
| SSMLBreak, | |
| SSMLContext, | |
| ) | |
| def parser(): | |
| return create_ssml_parser() | |
| def test_speak_tag(parser): | |
| ssml = """ | |
| <speak version="0.1"> | |
| <voice spk="xiaoyan" style="news"> | |
| <prosody rate="fast">你好</prosody> | |
| <break time="500ms"/> | |
| <prosody rate="slow">你好</prosody> | |
| </voice> | |
| </speak> | |
| """ | |
| segments = parser.parse(ssml) | |
| assert len(segments) == 3 | |
| assert isinstance(segments[0], SSMLSegment) | |
| assert segments[0].text == "你好" | |
| assert segments[0].params.rate == "fast" | |
| assert isinstance(segments[1], SSMLBreak) | |
| assert segments[1].duration == 500 | |
| assert isinstance(segments[2], SSMLSegment) | |
| assert segments[2].text == "你好" | |
| assert segments[2].params.rate == "slow" | |
| def test_voice_tag(parser): | |
| ssml = """ | |
| <speak version="0.1"> | |
| <voice spk="xiaoyan" style="news">你好</voice> | |
| </speak> | |
| """ | |
| segments = parser.parse(ssml) | |
| assert len(segments) == 1 | |
| assert isinstance(segments[0], SSMLSegment) | |
| assert segments[0].text == "你好" | |
| assert segments[0].params.spk == "xiaoyan" | |
| assert segments[0].params.style == "news" | |
| def test_break_tag(parser): | |
| ssml = """ | |
| <speak version="0.1"> | |
| <break time="500ms"/> | |
| </speak> | |
| """ | |
| segments = parser.parse(ssml) | |
| assert len(segments) == 1 | |
| assert isinstance(segments[0], SSMLBreak) | |
| assert segments[0].duration == 500 | |
| def test_prosody_tag(parser): | |
| ssml = """ | |
| <speak version="0.1"> | |
| <prosody rate="fast">你好</prosody> | |
| </speak> | |
| """ | |
| segments = parser.parse(ssml) | |
| assert len(segments) == 1 | |
| assert isinstance(segments[0], SSMLSegment) | |
| assert segments[0].text == "你好" | |
| assert segments[0].params.rate == "fast" | |
| def test_unsupported_version(parser): | |
| ssml = """ | |
| <speak version="0.2"> | |
| <voice spk="xiaoyan" style="news">你好</voice> | |
| </speak> | |
| """ | |
| with pytest.raises(ValueError, match=r"Unsupported SSML version 0.2"): | |
| parser.parse(ssml) | |
| def test_unsupported_tag(parser): | |
| ssml = """ | |
| <speak version="0.1"> | |
| <unsupported>你好</unsupported> | |
| </speak> | |
| """ | |
| with pytest.raises(NotImplementedError, match=r"Tag unsupported not supported."): | |
| parser.parse(ssml) | |
| if __name__ == "__main__": | |
| pytest.main() | |