Merge pull request #1269 from pipecat-ai/aleix/endofsentence-support-ellipses
utils: add support for ellipses in match_endofsentence()
This commit is contained in:
@@ -36,6 +36,8 @@ stt = DeepgramSTTService(..., live_options=LiveOptions(model="nova-2-general"))
|
|||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
|
- Fixed `match_endofsentence` support for ellipses.
|
||||||
|
|
||||||
- Fixed an issue that would cause undesired interruptions via
|
- Fixed an issue that would cause undesired interruptions via
|
||||||
`EmulateUserStartedSpeakingFrame` when only interim transcriptions (i.e. no
|
`EmulateUserStartedSpeakingFrame` when only interim transcriptions (i.e. no
|
||||||
final transcriptions) where received.
|
final transcriptions) where received.
|
||||||
|
|||||||
@@ -13,8 +13,8 @@ ENDOFSENTENCE_PATTERN_STR = r"""
|
|||||||
(?<!Mr|Ms|Dr) # Negative lookbehind: not preceded by Mr, Ms, Dr (combined bc. length is the same)
|
(?<!Mr|Ms|Dr) # Negative lookbehind: not preceded by Mr, Ms, Dr (combined bc. length is the same)
|
||||||
(?<!Mrs) # Negative lookbehind: not preceded by "Mrs"
|
(?<!Mrs) # Negative lookbehind: not preceded by "Mrs"
|
||||||
(?<!Prof) # Negative lookbehind: not preceded by "Prof"
|
(?<!Prof) # Negative lookbehind: not preceded by "Prof"
|
||||||
[\.\?\!;]| # Match a period, question mark, exclamation point, or semicolon
|
(\.\s*\.\s*\.|[\.\?\!;])| # Match a period, question mark, exclamation point, or semicolon
|
||||||
[。?!;।] # the full-width version (mainly used in East Asian languages such as Chinese, Hindi)
|
(\。\s*\。\s*\。|[。?!;।]) # the full-width version (mainly used in East Asian languages such as Chinese, Hindi)
|
||||||
$ # End of string
|
$ # End of string
|
||||||
"""
|
"""
|
||||||
ENDOFSENTENCE_PATTERN = re.compile(ENDOFSENTENCE_PATTERN_STR, re.VERBOSE)
|
ENDOFSENTENCE_PATTERN = re.compile(ENDOFSENTENCE_PATTERN_STR, re.VERBOSE)
|
||||||
|
|||||||
@@ -11,10 +11,12 @@ from pipecat.utils.string import match_endofsentence
|
|||||||
|
|
||||||
class TestUtilsString(unittest.IsolatedAsyncioTestCase):
|
class TestUtilsString(unittest.IsolatedAsyncioTestCase):
|
||||||
async def test_endofsentence(self):
|
async def test_endofsentence(self):
|
||||||
assert match_endofsentence("This is a sentence.")
|
assert match_endofsentence("This is a sentence.") == 19
|
||||||
assert match_endofsentence("This is a sentence! ")
|
assert match_endofsentence("This is a sentence!") == 19
|
||||||
assert match_endofsentence("This is a sentence?")
|
assert match_endofsentence("This is a sentence?") == 19
|
||||||
assert match_endofsentence("This is a sentence;")
|
assert match_endofsentence("This is a sentence;") == 19
|
||||||
|
assert match_endofsentence("This is a sentence...") == 21
|
||||||
|
assert match_endofsentence("This is a sentence . . .") == 24
|
||||||
assert not match_endofsentence("This is not a sentence")
|
assert not match_endofsentence("This is not a sentence")
|
||||||
assert not match_endofsentence("This is not a sentence,")
|
assert not match_endofsentence("This is not a sentence,")
|
||||||
assert not match_endofsentence("This is not a sentence, ")
|
assert not match_endofsentence("This is not a sentence, ")
|
||||||
|
|||||||
Reference in New Issue
Block a user