跳转至

Utils

get_sentence_based_splitter

get_sentence_based_splitter(
    min_sentence_length: int = 20,
) -> Callable[[str], tuple[str, str]]

返回一个基于句子边界将文本分割成块的函数。

参数

min_sentence_length: 被包含在一个块中的句子的最小长度。

返回

一个基于句子边界将文本分割成块的函数。

Source code in src/agents/voice/utils.py
def get_sentence_based_splitter(
    min_sentence_length: int = 20,
) -> Callable[[str], tuple[str, str]]:
    """返回一个基于句子边界将文本分割成块的函数。

    参数:
        min_sentence_length: 被包含在一个块中的句子的最小长度。

    返回:
        一个基于句子边界将文本分割成块的函数。
    """

    def sentence_based_text_splitter(text_buffer: str) -> tuple[str, str]:
        """
        一个将文本分割成块的函数。如果你希望在将文本发送到 TTS 模型之前就将其分割成块,
        而不是等到整个文本被处理完,这个函数会很有用。

        参数:
            text_buffer: 要分割的文本。

        返回:
            一个元组,第一个元素是要处理的文本,第二个元素是剩余的文本缓冲区。
        """
        sentences = re.split(r"(?<=[.!?])\s+", text_buffer.strip())
        if len(sentences) >= 1:
            combined_sentences = " ".join(sentences[:-1])
            if len(combined_sentences) >= min_sentence_length:
                remaining_text_buffer = sentences[-1]
                return combined_sentences, remaining_text_buffer
        return "", text_buffer

    return sentence_based_text_splitter