Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Important
Windows ML Çalışma Zamanı ve Konuşma Tanıma API'leri şu anda deneyseldir ve üretim ortamlarında kullanılmak üzere desteklenmez. Bu API'leri deneyen uygulamalar Microsoft Store'da yayımlanmamalıdır.
Important
Windows ML Çalışma Zamanı ve Konuşma Tanıma API'leri şu anda C++ ve Python'da kullanılabilir; C# şu anda desteklenmiyor. Bu API'leri C# dilinden kullanmakla ilgileniyorsanız, Windows ML GitHub deposunda bir sorun göndererek bize bildirin!
Windows ML Konuşma Tanıma API'si, kendi Whisper modeliniz üzerinden otomatik konuşma tanıma (ASR) çalıştırmayı kolaylaştırır. Whisper kodlayıcı işlem hattı, kod çözücü işlem hattı ve belirteç oluşturucu oluşturur, ardından Windows ML Runtime API'sinin üzerinde otomatik girişli transkripsiyon döngüsünü, akış çıkışını ve iptali sizin için işler. Windows bu API için bir model göndermez; Whisper modelini (kodlayıcı ve kod çözücü dosyalarının yanı sıra bir belirteç oluşturucu ile birlikte) uygulamanızla birlikte seçer, paketler ve dağıtırsınız.
Tip
Belirli bir Whisper modeline veya özel dağıtıma ihtiyacınız yoksa ve yalnızca Microsoft yönettiği bir modelle cihazda konuşmayı metne dönüştürmeyi istiyorsanız, bunun yerine kullanıma hazır Konuşma Tanıma API'sini kullanın.
Yine de kodlayıcı ve kod çözücü modelleri, yürütme hedefi ve işlem hatları gibi temel Çalışma Zamanı nesnelerini oluşturursunuz ve bunları oturuma geçirirsiniz. API donanım yerleşimini gizlemez; yalnızca kendi decode döngünüzü yazma gereksinimini ortadan kaldırır.
Desteklenen modeller
Konuşma Tanıma API'si, Whisper kodlayıcı/kod çözücü mimarisi için özel olarak tasarlanmıştır; genel bir ASR API'si değildir. Sağladığınız:
-
ONNX kodlayıcı ve kod çözücü modelleri (
encoder_model.onnxvedecoder_model.onnx), ONNX Runtime üzerinden çalıştırılan
Kodlayıcı/kod çözücü çiftine eşlik eden bir belirteçleyici dosyası. Giriş tensor, mono kayan noktalı PCM örneklerinin yanı sıra örnek hızı ve geçerli uzunluk meta verileri içerir.
Ses dökümü yapma
Dalga biçimi örneklerini tutan bir Çalışma Zamanı tensor sağlayın. Whisper kodlayıcı ve kod çözücü modellerini yükleyin, her biri için bir işlem hattı oluşturun ve bunları bir tokenizer ile bir oturum halinde birleştirin:
// Create the runtime and an execution target (CPU here; GPU/NPU also available).
ComPtr<IWinMLRuntime> runtime;
THROW_IF_FAILED(WinMLCreateRuntime(IID_PPV_ARGS(runtime.GetAddressOf())));
ComPtr<IWinMLExecutionTarget> target;
THROW_IF_FAILED(runtime->CreateCpuExecutionTarget(target.GetAddressOf()));
// Load the Whisper encoder as its own single-stage pipeline.
ComPtr<IWinMLModel> encoderModel;
THROW_IF_FAILED(runtime->LoadModelFromFile(
L"C:\\models\\whisper\\encoder_model.onnx", nullptr, encoderModel.GetAddressOf()));
ComPtr<IWinMLPipelineBuilder> encoderBuilder;
THROW_IF_FAILED(runtime->CreatePipelineBuilder(encoderBuilder.GetAddressOf()));
ComPtr<IWinMLStage> encoderStage;
THROW_IF_FAILED(encoderBuilder->AddModelStage(
encoderModel.Get(), target.Get(), L"whisper-encoder", encoderStage.GetAddressOf()));
ComPtr<IWinMLPipeline> encoderPipeline;
THROW_IF_FAILED(encoderBuilder->Build(encoderPipeline.GetAddressOf()));
// Load the Whisper decoder the same way.
ComPtr<IWinMLModel> decoderModel;
THROW_IF_FAILED(runtime->LoadModelFromFile(
L"C:\\models\\whisper\\decoder_model.onnx", nullptr, decoderModel.GetAddressOf()));
ComPtr<IWinMLPipelineBuilder> decoderBuilder;
THROW_IF_FAILED(runtime->CreatePipelineBuilder(decoderBuilder.GetAddressOf()));
ComPtr<IWinMLStage> decoderStage;
THROW_IF_FAILED(decoderBuilder->AddModelStage(
decoderModel.Get(), target.Get(), L"whisper-decoder", decoderStage.GetAddressOf()));
ComPtr<IWinMLPipeline> decoderPipeline;
THROW_IF_FAILED(decoderBuilder->Build(decoderPipeline.GetAddressOf()));
ComPtr<IWinMLTokenizer> tokenizer;
THROW_IF_FAILED(WinMLCreateTokenizerFromFile(
L"C:\\models\\whisper\\tokenizer.json", tokenizer.GetAddressOf()));
// Compose the encoder/decoder pipelines and tokenizer into a session.
const winml::tasks::speech::asr::AutomaticSpeechRecognitionArguments arguments{
runtime.Get(),
tokenizer.Get(),
{
encoderPipeline.Get(),
encoderStage.Get(),
decoderPipeline.Get(),
decoderStage.Get(),
target.Get(),
},
};
winml::tasks::speech::asr::AutomaticSpeechRecognition speechRecognition;
THROW_IF_FAILED(winml::tasks::speech::asr::BuildAutomaticSpeechRecognition(
arguments, speechRecognition));
Bir akış işlemi başlatmak için TranscribeWaveform çağrısı yapın, ardından döndürülen akıştan tamamlandığını bildirene kadar parçaları çekin:
ComPtr<IWinMLCancellationSource> cancellation;
THROW_IF_FAILED(speechRecognition.tasks->CreateCancellationSource(
cancellation.GetAddressOf()));
ComPtr<IWinMLAutomaticSpeechRecognitionPullStream> stream;
THROW_IF_FAILED(speechRecognition.session->TranscribeWaveform(
waveform.Get(),
&waveformMetadata,
cancellation.Get(),
stream.GetAddressOf()));
// Pull transcript text one fragment at a time until the stream completes.
WINML_AUTOMATIC_SPEECH_RECOGNITION_READ_STATUS status{};
LPCWSTR fragment = nullptr;
while (SUCCEEDED(stream->ReadNext(&status, &fragment)) &&
status == WINML_AUTOMATIC_SPEECH_RECOGNITION_READ_STATUS_UPDATE)
{
std::wprintf(L"%ls", fragment);
}
// The terminal result is the authoritative transcript and finish reason.
ComPtr<IWinMLAutomaticSpeechRecognitionResult> result;
THROW_IF_FAILED(stream->GetResult(result.GetAddressOf()));
waveform ve waveformMetadata kendi ses yükleme kodunuzdan gelir: mono kayan noktalı PCM örneklerini tutan bir Runtime tensörü, ayrıca bunu açıklayan örnek hızı ve geçerli uzunluk meta verileri.
Tamamlanan sonuç tam transkripti ve transkript sonu belirteci, iptal veya hata gibi bir bitiş nedenini bildirir.
C++ ve Python
Yerel API, WinMLTasks.h aracılığıyla kullanıma sunulur ve tipli C++ yardımcıları winml/tasks/speech/asr/WhisperAutomaticSpeechRecognition.hpp altında sunulur. Python uygulamalar projeksiyonu windowsml.tasks ile windowsml.runtimebirlikte kullanır.
Windows ML örnekleri bir C++ ve Python Whisper transkripsiyon örneğini içerir. Örnek, konuşma tanıma yapılandırmasının yanında tam Runtime kurulumunu gösterir, böylece soyutlamanın nerede başladığını ve temel alınan iş akışını nasıl özelleştirebileceğinizi görebilirsiniz.
Ayrıca bkz.
- Windows AI API'leriyle Konuşma Tanıma (kullanıma hazır, Microsoft yönetilen model)
- Windows ML Çalışma Zamanı API'sine genel bakış
- Windows ML Runtime API kavramları
- Windows ML Metin Oluşturma API'siyle metin oluşturma
- Windows ML örnekleri