AssemblyAI 宣布发布其新的 C# .NET SDK,旨在方便使用 .NET 语言(如 C#、VB.NET 和 F#)的开发者进行音频转录和分析。根据AssemblyAI,该 SDK 旨在简化使用 AssemblyAI 的高级语音 AI 模型的过程。
主要功能和目标
该 SDK 的开发具有几个主要目标:
- 使用惯用的 C# 为所有 AssemblyAI 模型和功能提供直观的接口。
- 确保与多个框架的兼容性,包括 .NET 6.0、.NET Framework 4.6.2 和 .NET Standard 2.0 及以上版本。
- 尽量减少依赖关系,以防止版本冲突和需要绑定重定向。
音频文件转录
该 SDK 的主要功能之一是音频转录。开发者可以异步或实时转录音频文件。以下是如何转录音频文件的示例:
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);
对于本地文件,可以使用类似的代码进行转录。
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);
实时音频转录
该 SDK 还支持使用流式语音到文本进行实时音频转录。这一功能对于需要即时处理音频数据的应用程序特别有用。
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();
// 以下为从麦克风获取音频的伪代码示例
GetAudio(async (chunk) => await transcriber.SendAudioAsync(chunk));
await transcriber.CloseAsync();
利用 LeMUR 进行 LLM 应用
该 SDK 与 LeMUR 集成,允许开发者在语音数据上构建大型语言模型(LLM)应用。以下是一个示例:
var lemurTaskParams = new LemurTaskParams
{
Prompt = "提供转录的简要总结。",
TranscriptIds = [transcript.Id],
FinalModel = LemurModel.AnthropicClaude3_5_Sonnet
};
var response = await client.Lemur.TaskAsync(lemurTaskParams);
Console.WriteLine(response.Response);
音频智能模型
此外,该 SDK 提供对音频智能模型的内置支持,可实现情感分析和其他高级功能。
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}");
}
更多信息请访问AssemblyAI 官方博客。
Image source: Shutterstock