MixtrainDocsBlog
from mixtrain import Audio

Overview

Use Audio for audio inputs and outputs. Mixtrain displays returned audio in a player, and you can download it locally for analysis.

Constructor

Audio(
    url: str,
    *,
    content_type: str | None = None,
    filename: str | None = None,
    duration_seconds: float | None = None,
    format: str | None = None,
)
ParameterTypeDescription
urlstrWorkspace path or URL (https://, gs://, s3://)
content_typestr | NoneMIME type
filenamestr | NoneOriginal filename
duration_secondsfloat | NoneDuration in seconds
formatstr | NoneFormat hint (mp3, wav)
audio = Audio("clips/recording.mp3", duration_seconds=30.0, format="mp3")

Properties

PropertyTypeDescription
urlstrWorkspace path or remote URL
content_typestr | NoneMIME type
filenamestr | NoneOriginal filename
duration_secondsfloat | NoneDuration in seconds
formatstr | NoneFormat (mp3, wav)

Methods

to_file()

Inherited from File. Downloads the audio and returns the local path. Cached across calls.

path = audio.to_file()

to_numpy()

Load audio as a numpy array with sample rate.

audio.to_numpy() -> tuple[np.ndarray, int]

Downloads the audio if needed and loads it with soundfile.

Returns: (samples, sample_rate) — audio samples as a numpy array and the sample rate as int.

samples, sample_rate = audio.to_numpy()
print(f"{len(samples)} samples at {sample_rate} Hz")
print(f"Duration: {len(samples) / sample_rate:.1f}s")

Using Audio

You can use Audio in your models, datasets, workflows, and routines.

As output

from mixtrain import MixModel
from mixtrain import Audio

class AudioGenerator(MixModel):
    def run(self, inputs=None):
        audio_url = self._generate(inputs["prompt"])
        return {
            "result": Audio(
                url=audio_url,
                duration_seconds=15.0,
                format="wav"
            )
        }

As input

from mixtrain import MixModel, Audio

class AudioAnalyzer(MixModel):
    def run(self, audio: Audio):
        samples, sr = audio.to_numpy()
        # ... analyze audio
        return {"duration": len(samples) / sr}

From model result

from mixtrain import Model

model = Model("music-generator")
result = model.run({"prompt": "Lo-fi beat"})

print(result.audio.url)
print(f"Duration: {result.audio.duration_seconds}s")

Storing Audio

Use Audio.from_file() for a local audio file, then call save() to persist it to workspace storage:

audio = Audio.from_file("clip.wav", duration_seconds=30.0)
saved_audio = audio.save("clips/clip.wav")

On this page