AssemblyAI has announced the release of a new C# .NET SDK designed to facilitate audio transcription and analysis for developers using .NET languages such as C#, VB.NET, and F#. According to AssemblyAI, the SDK aims to simplify the use of AssemblyAI’s advanced Speech AI models.
Key Features and Objectives
The SDK was developed with several key goals in mind:
- Provides an intuitive interface to all AssemblyAI models and functions using idiomatic C#.
- Ensures compatibility with multiple frameworks, including .NET 6.0, .NET Framework 4.6.2, .NET Standard 2.0, and later.
- Minimize dependencies to avoid version conflicts and the need for binding redirects.
Transcribe audio files
One of the main features of the SDK is audio transcription. Developers can transcribe audio files asynchronously or in real time. Below is an example of how to transcribe an audio file.
using AssemblyAI;
using AssemblyAI.Transcripts;
var client = new AssemblyAIClient("YOUR_API_KEY");
var transcript = await client.Transcripts.TranscribeAsync(new TranscriptParams
AudioUrl = "https://storage.googleapis.com/aai-docs-samples/nbc.mp3"
);
transcript.EnsureStatusCompleted();
Console.WriteLine(transcript.Text);
For local files, you can also perform transcription using similar code.
await using var stream = new FileStream("./nbc.mp3", FileMode.Open);
var transcript = await client.Transcripts.TranscribeAsync(
stream,
new TranscriptOptionalParams
LanguageCode = TranscriptLanguageCode.EnUs
);
transcript.EnsureStatusCompleted();
Console.WriteLine(transcript.Text);
Real-time audio transcription
The SDK also supports real-time audio transcription using Streaming Speech-to-Text, which is particularly useful for applications that require immediate processing of audio data.
using AssemblyAI.Realtime;
await using var transcriber = new RealtimeTranscriber(new RealtimeTranscriberOptions
ApiKey = "YOUR_API_KEY",
SampleRate = 16_000
);
transcriber.PartialTranscriptReceived.Subscribe(transcript =>
Console.WriteLine($"Partial: transcript.Text");
);
transcriber.FinalTranscriptReceived.Subscribe(transcript =>
Console.WriteLine($"Final: transcript.Text");
);
await transcriber.ConnectAsync();
// Pseudocode for getting audio from a microphone for example
GetAudio(async (chunk) => await transcriber.SendAudioAsync(chunk));
await transcriber.CloseAsync();
Leveraging LeMUR for LLM Applications
The SDK integrates with LeMUR to enable developers to build large-scale language model (LLM) applications from speech data. Examples include:
var lemurTaskParams = new LemurTaskParams
Prompt = "Provide a brief summary of the transcript.",
TranscriptIds = (transcript.Id),
FinalModel = LemurModel.AnthropicClaude3_5_Sonnet
;
var response = await client.Lemur.TaskAsync(lemurTaskParams);
Console.WriteLine(response.Response);
Audio Intelligence Model
The SDK also includes native support for audio intelligence models, enabling you to implement sentiment analysis and other advanced features.
var transcript = await client.Transcripts.TranscribeAsync(new TranscriptParams
AudioUrl = "https://storage.googleapis.com/aai-docs-samples/nbc.mp3",
SentimentAnalysis = true
);
foreach (var result in transcript.SentimentAnalysisResults!)
Console.WriteLine(result.Text);
Console.WriteLine(result.Sentiment); // POSITIVE, NEUTRAL, or NEGATIVE
Console.WriteLine(result.Confidence);
Console.WriteLine($"Timestamp: result.Start - result.End");
For more information, visit the official AssemblyAI blog.
Image source: Shutterstock