Skip to content

v0.11.0 — STT File Upload & API Update

This release adds native file upload support for Speech-to-Text transcription and updates to the latest ElevenLabs API specification. Contains breaking changes to the TranscriptionRequest API.

Highlights

  • STT File Upload: Transcribe local audio files directly using FileBytes field
  • Latest API Spec: Regenerated client from updated ElevenLabs OpenAPI specification
  • Breaking Changes: Cleaner TranscriptionRequest API with FileBytes/FileName fields

Breaking Changes

Component Before After
TranscriptionRequest.FileContent string (base64) Removed
TranscriptionRequest.FileBytes N/A []byte (raw audio)
TranscriptionRequest.Filename string Renamed to FileName
MusicService.Generate() Returns audio Returns ErrMusicCompositionUnavailable
MusicService.GenerateStream() Returns audio Returns ErrMusicCompositionUnavailable
VoiceDesignService legacy API gender/age/accent params Deprecated, use GenerateFromDescription

Migration Guide

TranscriptionRequest Changes

// Before (v0.10.x)
result, err := client.SpeechToText().Transcribe(ctx, &elevenlabs.TranscriptionRequest{
    FileContent: base64EncodedAudio,
    Filename:    "audio.mp3",
})

// After (v0.11.0)
audioData, _ := os.ReadFile("audio.mp3")
result, err := client.SpeechToText().Transcribe(ctx, &elevenlabs.TranscriptionRequest{
    FileBytes: audioData,
    FileName:  "audio.mp3",
})

// Or use the convenience method
result, err := client.SpeechToText().TranscribeFile(ctx, audioData)

Music Composition

Music composition endpoints are temporarily unavailable due to complex API schema that ogen cannot generate. Use alternative methods:

// These still work:
result, err := client.Music().SeparateStems(ctx, req)
result, err := client.Music().VideoToMusic(ctx, req)

// These return ErrMusicCompositionUnavailable:
result, err := client.Music().Generate(ctx, req)      // Error
result, err := client.Music().GenerateStream(ctx, req) // Error

Voice Design

// Before (deprecated)
result, err := client.VoiceDesign().Generate(ctx, &elevenlabs.VoiceDesignRequest{
    Gender: elevenlabs.VoiceGenderFemale,
    Age:    elevenlabs.VoiceAgeYoung,
    Accent: elevenlabs.VoiceAccentAmerican,
    Text:   "Sample text",
})

// After (recommended)
result, err := client.VoiceDesign().GenerateFromDescription(ctx, &elevenlabs.VoiceDescriptionRequest{
    VoiceDescription: "A warm, friendly female voice with an American accent",
    Text:             "Sample text",
})

New Features

STT File Upload

Transcribe local audio files without base64 encoding:

// Read audio file
audioData, err := os.ReadFile("interview.mp3")
if err != nil {
    log.Fatal(err)
}

// Transcribe with full options
result, err := client.SpeechToText().Transcribe(ctx, &elevenlabs.TranscriptionRequest{
    FileBytes:      audioData,
    FileName:       "interview.mp3",
    LanguageCode:   "en",
    Diarize:        true,
    NumSpeakers:    2,
    TagAudioEvents: true,
})

// Or use URL-based transcription (unchanged)
result, err := client.SpeechToText().TranscribeURL(ctx, audioURL)

Text-Based Voice Design

result, err := client.VoiceDesign().GenerateFromDescription(ctx, &elevenlabs.VoiceDescriptionRequest{
    VoiceDescription: "A calm, authoritative male narrator voice suitable for documentaries",
    Text:             "This is a sample of the generated voice.",
})

API Regeneration

The ogen client has been regenerated from the latest ElevenLabs OpenAPI specification. This includes:

  • New endpoints and parameters
  • Updated type definitions
  • Schema fixes via ogen-fixformdata post-processor

Build Tooling

The generate.sh script now includes ogen-fixformdata to fix form-data encoding of empty JSON arrays/objects:

# Post-processing steps in generate.sh:
go run github.com/plexusone/ogen-tools/cmd/ogen-fixnull@latest internal/api/oas_json_gen.go
go run github.com/plexusone/ogen-tools/cmd/ogen-fixerror@latest internal/api/oas_response_decoders_gen.go
go run github.com/plexusone/ogen-tools/cmd/ogen-fixformdata@latest internal/api/oas_request_encoders_gen.go

Dependencies

  • Bump github.com/plexusone/omnivoice-core to v0.13.0
  • Bump github.com/grokify/mogo from 0.74.3 to 0.74.6
  • Bump go.opentelemetry.io/otel/metric from 1.43.0 to 1.44.0

Installation

go get github.com/plexusone/elevenlabs-go@v0.11.0

Full Changelog | Compare to v0.10.1