跳转至

Model

TTSVoice module-attribute

TTSVoice = Literal['alloy', 'ash', 'coral', 'echo', 'fable', 'onyx', 'nova', 'sage', 'shimmer']

TTSModelSettings 语音枚举的可导出类型

TTSModelSettings dataclass

TTS(文本转语音)模型的设置。

Source code in agents/voice/model.py
@dataclass
class TTSModelSettings:
    """TTS(文本转语音)模型的设置。"""
    voice: TTSVoice | None = None
    """
    用于 TTS 模型的语音。如果未提供,将使用相应模型的默认语音。
    """

    buffer_size: int = 120
    """正在流式输出的音频数据块的最小大小。"""

    dtype: npt.DTypeLike = np.int16
    """返回的音频数据的数据类型。"""

    transform_data: (
        Callable[[npt.NDArray[np.int16 | np.float32]], npt.NDArray[np.int16 | np.float32]] | None
    ) = None
    """
    用于转换 TTS 模型数据的函数。如果你希望结果音频流已经具有特定形状,这会很有用。
    """

    instructions: str = (
        "You will receive partial sentences. Do not complete the sentence just read out the text."
    )
    """
    用于 TTS 模型的指令。如果你想控制音频输出的语气,这会很有用。
    """

    text_splitter: Callable[[str], tuple[str, str]] = get_sentence_based_splitter()
    """
    用于将文本分割成块的函数。如果你希望在将文本发送到 TTS 模型之前就将其分块,而不是等到整个文本处理完毕,这会很有用。
    """

    speed: float | None = None
    """TTS 模型朗读文本的速度。范围为 0.25 到 4.0。"""

voice class-attribute instance-attribute

voice: TTSVoice | None = None

用于 TTS 模型的语音。如果未提供,将使用相应模型的默认语音。

buffer_size class-attribute instance-attribute

buffer_size: int = 120

正在流式输出的音频数据块的最小大小。

dtype class-attribute instance-attribute

dtype: DTypeLike = int16

返回的音频数据的数据类型。

transform_data class-attribute instance-attribute

transform_data: Callable[[NDArray[int16 | float32]], NDArray[int16 | float32]] | None = None

用于转换 TTS 模型数据的函数。如果你希望结果音频流已经具有特定形状,这会很有用。

instructions class-attribute instance-attribute

instructions: str = 'You will receive partial sentences. Do not complete the sentence just read out the text.'

用于 TTS 模型的指令。如果你想控制音频输出的语气,这会很有用。

text_splitter class-attribute instance-attribute

text_splitter: Callable[[str], tuple[str, str]] = get_sentence_based_splitter()

用于将文本分割成块的函数。如果你希望在将文本发送到 TTS 模型之前就将其分块,而不是等到整个文本处理完毕,这会很有用。

speed class-attribute instance-attribute

speed: float | None = None

TTS 模型朗读文本的速度。范围为 0.25 到 4.0。

TTSModel

Bases: ABC

可以将文本转换为音频输出的文本转语音模型。

Source code in agents/voice/model.py
class TTSModel(abc.ABC):
    """可以将文本转换为音频输出的文本转语音模型。"""

    @property
    @abc.abstractmethod
    def model_name(self) -> str:
        """TTS 模型的名称。"""
        pass

    @abc.abstractmethod
    def run(self, text: str, settings: TTSModelSettings) -> AsyncIterator[bytes]:
        """给定一个文本字符串,生成 PCM 格式的音频字节流。

        参数:
            text: 要转换为音频的文本。

        返回:
            PCM 格式音频字节的异步迭代器。
        """
        pass

model_name abstractmethod property

model_name: str

TTS 模型的名称。

run abstractmethod

run(text: str, settings: TTSModelSettings) -> AsyncIterator[bytes]

给定一个文本字符串,生成 PCM 格式的音频字节流。

参数

text: 要转换为音频的文本。

返回

PCM 格式音频字节的异步迭代器。

Source code in agents/voice/model.py
@abc.abstractmethod
def run(self, text: str, settings: TTSModelSettings) -> AsyncIterator[bytes]:
    """给定一个文本字符串,生成 PCM 格式的音频字节流。

    参数:
        text: 要转换为音频的文本。

    返回:
        PCM 格式音频字节的异步迭代器。
    """
    pass

StreamedTranscriptionSession

Bases: ABC

音频输入的流式转录会话。

Source code in agents/voice/model.py
class StreamedTranscriptionSession(abc.ABC):
    """音频输入的流式转录会话。"""

    @abc.abstractmethod
    def transcribe_turns(self) -> AsyncIterator[str]:
        """生成文本转录流。每个转录是对话中的一个回合。

        该方法预期仅在调用 `close()` 后返回。
        """
        pass

    @abc.abstractmethod
    async def close(self) -> None:
        """关闭会话。"""
        pass

transcribe_turns abstractmethod

transcribe_turns() -> AsyncIterator[str]

生成文本转录流。每个转录是对话中的一个回合。

该方法预期仅在调用 close() 后返回。

Source code in agents/voice/model.py
@abc.abstractmethod
def transcribe_turns(self) -> AsyncIterator[str]:
    """生成文本转录流。每个转录是对话中的一个回合。

    该方法预期仅在调用 `close()` 后返回。
    """
    pass

close abstractmethod async

close() -> None

关闭会话。

Source code in agents/voice/model.py
@abc.abstractmethod
async def close(self) -> None:
    """关闭会话。"""
    pass

STTModelSettings dataclass

语音转文本(STT)模型的设置。

Source code in agents/voice/model.py
@dataclass
class STTModelSettings:
    """语音转文本(STT)模型的设置。"""

    prompt: str | None = None
    """模型要遵循的指令。"""

    language: str | None = None
    """音频输入的语言。"""

    temperature: float | None = None
    """模型的温度参数。"""

    turn_detection: dict[str, Any] | None = None
    """使用流式音频输入时模型的回合检测设置。"""

prompt class-attribute instance-attribute

prompt: str | None = None

模型要遵循的指令。

language class-attribute instance-attribute

language: str | None = None

音频输入的语言。

temperature class-attribute instance-attribute

temperature: float | None = None

模型的温度参数。

turn_detection class-attribute instance-attribute

turn_detection: dict[str, Any] | None = None

使用流式音频输入时模型的回合检测设置。

STTModel

Bases: ABC

可以将音频输入转换为文本的语音转文本模型。

Source code in agents/voice/model.py
class STTModel(abc.ABC):
    """可以将音频输入转换为文本的语音转文本模型。"""

    @property
    @abc.abstractmethod
    def model_name(self) -> str:
        """STT 模型的名称。"""
        pass

    @abc.abstractmethod
    async def transcribe(
        self,
        input: AudioInput,
        settings: STTModelSettings,
        trace_include_sensitive_data: bool,
        trace_include_sensitive_audio_data: bool,
    ) -> str:
        """给定音频输入,生成文本转录。

        参数:
            input: 要转录的音频输入。
            settings: 转录时使用的设置。
            trace_include_sensitive_data: 是否在追踪中包含敏感数据。
            trace_include_sensitive_audio_data: 是否在追踪中包含敏感音频数据。

        返回:
            音频输入的文本转录。
        """
        pass

    @abc.abstractmethod
    async def create_session(
        self,
        input: StreamedAudioInput,
        settings: STTModelSettings,
        trace_include_sensitive_data: bool,
        trace_include_sensitive_audio_data: bool,
    ) -> StreamedTranscriptionSession:
        """创建一个新的转录会话,你可以向其推送音频,并接收文本转录流。

        参数:
            input: 要转录的音频输入。
            settings: 转录时使用的设置。
            trace_include_sensitive_data: 是否在追踪中包含敏感数据。
            trace_include_sensitive_audio_data: 是否在追踪中包含敏感音频数据。

        返回:
            一个新的转录会话。
        """
        pass

model_name abstractmethod property

model_name: str

STT 模型的名称。

transcribe abstractmethod async

transcribe(input: AudioInput, settings: STTModelSettings, trace_include_sensitive_data: bool, trace_include_sensitive_audio_data: bool) -> str

给定音频输入,生成文本转录。

参数

input: 要转录的音频输入。 settings: 转录时使用的设置。 trace_include_sensitive_data: 是否在追踪中包含敏感数据。 trace_include_sensitive_audio_data: 是否在追踪中包含敏感音频数据。

返回

音频输入的文本转录。

Source code in agents/voice/model.py
@abc.abstractmethod
async def transcribe(
    self,
    input: AudioInput,
    settings: STTModelSettings,
    trace_include_sensitive_data: bool,
    trace_include_sensitive_audio_data: bool,
) -> str:
    """给定音频输入,生成文本转录。

    参数:
        input: 要转录的音频输入。
        settings: 转录时使用的设置。
        trace_include_sensitive_data: 是否在追踪中包含敏感数据。
        trace_include_sensitive_audio_data: 是否在追踪中包含敏感音频数据。

    返回:
        音频输入的文本转录。
    """
    pass

create_session abstractmethod async

create_session(input: StreamedAudioInput, settings: STTModelSettings, trace_include_sensitive_data: bool, trace_include_sensitive_audio_data: bool) -> StreamedTranscriptionSession

创建一个新的转录会话,你可以向其推送音频,并接收文本转录流。

参数

input: 要转录的音频输入。 settings: 转录时使用的设置。 trace_include_sensitive_data: 是否在追踪中包含敏感数据。 trace_include_sensitive_audio_data: 是否在追踪中包含敏感音频数据。

返回

一个新的转录会话。

Source code in agents/voice/model.py
@abc.abstractmethod
async def create_session(
    self,
    input: StreamedAudioInput,
    settings: STTModelSettings,
    trace_include_sensitive_data: bool,
    trace_include_sensitive_audio_data: bool,
) -> StreamedTranscriptionSession:
    """创建一个新的转录会话,你可以向其推送音频,并接收文本转录流。

    参数:
        input: 要转录的音频输入。
        settings: 转录时使用的设置。
        trace_include_sensitive_data: 是否在追踪中包含敏感数据。
        trace_include_sensitive_audio_data: 是否在追踪中包含敏感音频数据。

    返回:
        一个新的转录会话。
    """
    pass

VoiceModelProvider

Bases: ABC

语音模型提供者的基础接口。

模型提供者负责根据名称创建语音转文本和文本转语音模型。

Source code in agents/voice/model.py
class VoiceModelProvider(abc.ABC):
    """语音模型提供者的基础接口。

    模型提供者负责根据名称创建语音转文本和文本转语音模型。
    """

    @abc.abstractmethod
    def get_stt_model(self, model_name: str | None) -> STTModel:
        """根据名称获取语音转文本模型。

        参数:
            model_name: 要获取的模型名称。

        返回:
            语音转文本模型。
        """
        pass

    @abc.abstractmethod
    def get_tts_model(self, model_name: str | None) -> TTSModel:
        """根据名称获取文本转语音模型。"""

get_stt_model abstractmethod

get_stt_model(model_name: str | None) -> STTModel

根据名称获取语音转文本模型。

参数

model_name: 要获取的模型名称。

返回

语音转文本模型。

Source code in agents/voice/model.py
@abc.abstractmethod
def get_stt_model(self, model_name: str | None) -> STTModel:
    """根据名称获取语音转文本模型。

    参数:
        model_name: 要获取的模型名称。

    返回:
        语音转文本模型。
    """
    pass

get_tts_model abstractmethod

get_tts_model(model_name: str | None) -> TTSModel

根据名称获取文本转语音模型。

Source code in agents/voice/model.py
@abc.abstractmethod
def get_tts_model(self, model_name: str | None) -> TTSModel:
    """根据名称获取文本转语音模型。"""