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() | |