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
FileBytesfield - Latest API Spec: Regenerated client from updated ElevenLabs OpenAPI specification
- Breaking Changes: Cleaner TranscriptionRequest API with
FileBytes/FileNamefields
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-fixformdatapost-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-coreto v0.13.0 - Bump
github.com/grokify/mogofrom 0.74.3 to 0.74.6 - Bump
go.opentelemetry.io/otel/metricfrom 1.43.0 to 1.44.0