Skip to content

Speechmatics

Nuget package dotnet License: MIT Discord

Features 🔥

  • Fully generated C# SDK based on official Speechmatics OpenAPI specification using AutoSDK
  • Same day update to support new features
  • Updated and supported automatically if there are no breaking changes
  • All modern .NET features - nullability, trimming, NativeAOT, etc.
  • Support .Net Framework/.Net Standard 2.0

Usage

1
2
3
using Speechmatics;

using var client = new SpeechmaticsClient(apiKey);

Generate

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
var apiKey =
    Environment.GetEnvironmentVariable("SPEECHMATICS_API_KEY") is { Length: > 0 } value
        ? value
        : throw new AssertInconclusiveException("SPEECHMATICS_API_KEY environment variable is not found.");

using var client = new SpeechmaticsClient(apiKey);

// Create a transcription job with a URL-based audio source.
var configJson = """
    {
        "type": "transcription",
        "transcription_config": {
            "language": "en"
        },
        "fetch_data": {
            "url": "https://github.com/tryAGI/Speechmatics/raw/main/assets/test.mp3"
        }
    }
    """;
var createResponse = await client.CreateJobsAsync(config: configJson);

// Poll for job completion.
JobDetails job;
do
{
    await Task.Delay(TimeSpan.FromSeconds(2));
    var jobResponse = await client.GetJobsByJobidAsync(jobid: createResponse.Id);
    job = jobResponse.Job;
}
while (job.Status == JobDetailsStatus.Running);

// Retrieve the transcript.
var transcript = await client.GetJobsByJobidTranscriptAsync(
    jobid: createResponse.Id,
    format: GetJobsTranscriptFormat.JsonV2);

MeaiTools

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
var apiKey =
    Environment.GetEnvironmentVariable("SPEECHMATICS_API_KEY") is { Length: > 0 } value
        ? value
        : throw new AssertInconclusiveException("SPEECHMATICS_API_KEY environment variable is not found.");

using var client = new SpeechmaticsClient(apiKey);

// Create tools for transcription, job status, and job listing.
var transcribeTool = client.AsTranscribeUrlTool(defaultLanguage: "en");
var getJobStatusTool = client.AsGetJobStatusTool();
var listJobsTool = client.AsListJobsTool(defaultLimit: 5);

// These tools can be passed to any IChatClient that supports function calling.
var tools = new[] { transcribeTool, getJobStatusTool, listJobsTool };

SpeechToText

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
var apiKey =
    Environment.GetEnvironmentVariable("SPEECHMATICS_API_KEY") is { Length: > 0 } value
        ? value
        : throw new AssertInconclusiveException("SPEECHMATICS_API_KEY environment variable is not found.");

// Create a Speechmatics client that implements ISpeechToTextClient.
using var client = new SpeechmaticsClient(apiKey);
ISpeechToTextClient sttClient = client;

// Verify the client provides proper metadata.
var metadata = sttClient.GetService<SpeechToTextClientMetadata>();

// The client can also be retrieved via GetService.
var self = sttClient.GetService<SpeechmaticsClient>();

Support

Priority place for bugs: https://github.com/tryAGI/Speechmatics/issues
Priority place for ideas and general questions: https://github.com/tryAGI/Speechmatics/discussions
Discord: https://discord.gg/Ca2xhfBf3v

Acknowledgments

JetBrains logo

This project is supported by JetBrains through the Open Source Support Program.