Skip to content

AudioInput

autogen.beta.events.input_events.AudioInput #

AudioInput(url: str) -> AudioUrlInput
AudioInput(*, file_id: str, filename: str | None = None) -> FileIdInput
AudioInput(*, data: bytes, media_type: AudioMediaType) -> BinaryInput
AudioInput(*, path: str | PathLike[str], media_type: AudioMediaType | None = None) -> BinaryInput
AudioInput(url=None, *, file_id=None, filename=None, data=None, media_type=None, path=None)

Factory for creating audio input events.

Usage

AudioInput("https://example.com/audio.wav") # URL AudioInput(file_id="file-abc123") # pre-uploaded file AudioInput(data=raw_bytes, media_type="audio/wav") # raw binary AudioInput(path="recording.wav") # local file

Source code in autogen/beta/events/input_events.py
def AudioInput(  # noqa: N802
    url: str | None = None,
    *,
    file_id: str | None = None,
    filename: str | None = None,
    data: bytes | None = None,
    media_type: AudioMediaType | None = None,
    path: str | PathLike[str] | None = None,
) -> AudioUrlInput | FileIdInput | BinaryInput:
    """Factory for creating audio input events.

    Usage:
        AudioInput("https://example.com/audio.wav")            # URL
        AudioInput(file_id="file-abc123")                      # pre-uploaded file
        AudioInput(data=raw_bytes, media_type="audio/wav")      # raw binary
        AudioInput(path="recording.wav")                        # local file
    """
    if url is not None:
        return AudioUrlInput(url)

    if file_id is not None:
        return FileIdInput(file_id, filename=filename)

    if path is not None:
        p = Path(path)
        suffix = p.suffix.lower()
        resolved_type = _AUDIO_EXTENSION_TO_MEDIA_TYPE.get(suffix)

        if resolved_type is None:
            if media_type is None:
                raise ValueError(
                    f"Cannot infer audio media type from extension '{suffix}'. Provide 'media_type' explicitly."
                )

            resolved_type = media_type

        return BinaryInput(
            p.read_bytes(),
            media_type=resolved_type,
            vendor_metadata={"filename": p.name},
            kind=BinaryType.AUDIO,
        )

    if data is not None:
        if media_type is None:
            raise ValueError("'media_type' is required when using 'data'")
        return BinaryInput(
            data,
            media_type=media_type,
            kind=BinaryType.AUDIO,
        )

    raise ValueError("AudioInput() requires one of: 'url', 'file_id', 'data' + 'media_type', or 'path'")