# Gladia Provider

Gladia provides speech-to-text transcription. The current Go provider
implements the shared `provider.TranscriptionModel` interface and is used
through `ai.Transcribe`.

## Setup

```go
import (
    "context"
    "fmt"
    "log"
    "os"

    "github.com/digitallysavvy/go-ai/pkg/ai"
    "github.com/digitallysavvy/go-ai/pkg/providers/gladia"
)
```

```go
provider := gladia.New(gladia.Config{
    APIKey: os.Getenv("GLADIA_API_KEY"),
})

model, err := provider.TranscriptionModel("")
if err != nil {
    log.Fatal(err)
}
```

Gladia has a single transcription model, not a selectable catalog — the
model ID argument is kept for interface parity with other providers but is
not sent in the request; pass an empty string.

## Transcribe Audio

```go
audioData, err := os.ReadFile("meeting.mp3")
if err != nil {
    log.Fatal(err)
}

result, err := ai.Transcribe(context.Background(), ai.TranscribeOptions{
    Model:    model,
    Audio:    audioData,
    MimeType: "audio/mpeg",
    ProviderOptions: map[string]interface{}{
        "gladia": map[string]interface{}{
            "language": "en",
        },
    },
})
if err != nil {
    log.Fatal(err)
}

fmt.Println(result.Text)
if result.DurationInSeconds != nil {
    fmt.Printf("Duration: %.2f seconds\n", *result.DurationInSeconds)
}
```

## Timestamps

```go
result, err := ai.Transcribe(context.Background(), ai.TranscribeOptions{
    Model:    model,
    Audio:    audioData,
    MimeType: "audio/mpeg",
    ProviderOptions: map[string]interface{}{
        "gladia": map[string]interface{}{
            "detectLanguage": true,
        },
    },
})
if err != nil {
    log.Fatal(err)
}

for _, segment := range result.Segments {
    fmt.Printf("[%.2f-%.2f] %s\n", segment.StartSecond, segment.EndSecond, segment.Text)
}
```

## Workflow Serialization

Gladia transcription models can cross a workflow boundary with
`provider.SerializeTranscriptionModel` / `DeserializeTranscriptionModel`. See
[Provider Serialization](https://goaisdk.com/docs/agents/workflow-agent.md#provider-serialization)
for the mechanism.

## See Also

- [API Reference: Transcribe](https://goaisdk.com/docs/reference/ai/transcribe.md)
- [Transcription Guide](https://goaisdk.com/docs/ai-sdk-core/transcription.md)
- [Gladia Documentation](https://www.gladia.io/docs)
