Files
2026-05-27 12:55:17 +02:00

43 lines
1.2 KiB
C#

using MeetingAssistant.Recording;
namespace MeetingAssistant.Transcription;
public interface ISpeechRecognitionPipeline : IAsyncDisposable
{
Task InitializeAsync(CancellationToken cancellationToken);
Task InitializeAsync(
SpeechRecognitionPipelineOptions options,
CancellationToken cancellationToken);
Task WaitUntilReadyAsync(CancellationToken cancellationToken);
ValueTask WriteAsync(AudioChunk chunk, CancellationToken cancellationToken);
Task CompleteAsync(CancellationToken cancellationToken);
IAsyncEnumerable<TranscriptionSegment> ReadLiveTranscriptAsync(CancellationToken cancellationToken);
Task<IReadOnlyList<TranscriptionSegment>> ReadFinishedTranscriptAsync(
string audioPath,
SpeechRecognitionPipelineOptions options,
CancellationToken cancellationToken);
}
public interface ISpeechRecognitionPipelineFactory
{
ISpeechRecognitionPipeline Create();
ISpeechRecognitionPipeline Create(string? launchProfileName)
{
return Create();
}
}
public sealed record SpeechRecognitionPipelineOptions(
int? NumSpeakers = null,
IReadOnlyList<string>? DictationWords = null)
{
public static SpeechRecognitionPipelineOptions Default { get; } = new();
}