Waveform.from_encoded_bytes()

static Waveform.from_encoded_bytes(encoded_bytes, start_time_milliseconds=0, end_time_milliseconds=0, frame_rate_hz=0, num_channels=0, convert_to_mono=False, zero_pad_ending=False, resample_mode=0, decoding_backend=0, file_extension='', mime_type='')

Decodes audio stored as bytes.

Example

Decode from bytes while auto-detecting the format as MP3.

>>> from babycat import Waveform
>>> with open("audio-for-tests/andreas-theme/track.mp3", "rb") as fh:
...     the_bytes = fh.read()
>>> waveform = Waveform.from_encoded_bytes(the_bytes)
>>> waveform
<babycat.Waveform: 9586944 frames, 2 channels, 44100 hz>

Example

Decode from bytes with a file extension hint.

>>> waveform2 = Waveform.from_encoded_bytes(
...     the_bytes,
...     file_extension="mp3",
... )
Parameters
  • encoded_bytes (bytes) – A bytes object containing an encoded audio file, such as MP3 file.

  • start_time_milliseconds (int, optional) – We discard any audio before this millisecond offset. By default, this does nothing and the audio is decoded from the beginning. Negative offsets are invalid.

  • end_time_milliseconds (int, optional) – We discard any audio after this millisecond offset. By default, this does nothing and the audio is decoded all the way to the end. If start_time_milliseconds is specified, then end_time_milliseconds must be greater. The resulting

  • frame_rate_hz (int, optional) – A destination frame rate to resample the audio to. Do not specify this parameter if you wish Babycat to preserve the audio’s original frame rate. This does nothing if frame_rate_hz is equal to the audio’s original frame rate.

  • num_channels (int, optional) – Set this to a positive integer n to select the first n channels stored in the audio file. By default, Babycat will return all of the channels in the original audio. This will raise an exception if you specify a num_channels greater than the actual number of channels in the audio.

  • convert_to_mono (bool, optional) – Set to True to average all channels into a single monophonic (mono) channel. If num_channels = n is also specified, then only the first n channels will be averaged. Note that convert_to_mono cannot be set to True while also setting num_channels = 1.

  • zero_pad_ending (bool, optional) – If you set this to True, Babycat will zero-pad the ending of the decoded waveform to ensure that the output waveform’s duration is exactly end_time_milliseconds - start_time_milliseconds. By default, zero_pad_ending = False, in which case the output waveform will be shorter than end_time_milliseconds - start_time_milliseconds if the input audio is shorter than end_time_milliseconds.

  • resample_mode (int, optional) – If you set frame_rate_hz to resample the audio when decoding, you can also set resample_mode to pick which resampling backend to use. The babycat.resample_mode submodule contains the various available resampling algorithms compiled into Babycat. By default, Babycat resamples audio using libsamplerate at its highest-quality setting.

  • file_extension (str, optional) – An optional hint of the input audio file’s encoding. An example of a valid value is "mp3". Babycat will automatically detect the correct encoding of input_audio, even if file_extension is an incorrect guess.

  • mime_type (str, optional) – An optional hint of the input audio file’s encoding. An example of a valid value is "audio/mpeg". Babycat will automatically detect the correct encoding of input_audio, even if mime_type is an incorrect guess.

Returns

Returns a waveform decoded from encoded_bytes.

Return type

Waveform

Raises