म्यूजर तथा स्थानीय LLLLms के साथ डिइन्टिक आवाज फ़ॉर्म तैयार करना (हिन्दी (Hindi))

म्यूजर तथा स्थानीय LLLLms के साथ डिइन्टिक आवाज फ़ॉर्म तैयार करना

Monday, 05 January 2026

//

22 minute read

दस आज्ञाएँ

परिचय

जिस में हम एक आवाज़ का निर्माण करते हैं

यहाँ TRMMS0 ध्वनि इंटरफेस के बारे में बात करता है हर कोई चाहता है कि उन्हें एमएमईएस2CK3 पर भरोसा न करे और वे MS4K4CK5 के लिए सही नहीं है

अधिकतर आवाज फ़ॉर्म असफल हो जाते हैं मॉडल एक तिथि सुन रहा है या निर्णय कर रहा है... / मैं

आप एक पल आप एक LLLMSCM-0 STCKCK1 अपने फ़ॉर्म प्रवाहित MS2MS2MK2 mMS3s आप एक गैर गैर गैर एमईएस4 बॉक्स में डाल दिया क्या एक अनुमानित उपयोगकर्ता के अनुभव के बारे में होना चाहिए

लेकिन अगर हम अपनी केक हो सकता है और इसे खा सकता है और यह भी mMS0 CLLCK1 CLAL के लिए CLLLIL CKKKK2 लेकिन अनुमानित कोड हर चीज के लिए कि असल में मामलों के लिए MMS0

कि UNMS2MS2MBS CONT TBS3M TTMBS OBSSUNK5 स्थानीय बोम्पोचों का उपयोग करके WUMSCMSCSCMMSSSCSSSUMSSUMS और स्थानीय W3M5MSCHMSCOMS CRSCOSOMOMOMS COMSSCSCSONTCHS COSOS COS CONS COS COMSSSSSSSSCHS COMSS55555555555555के लिए खुला बादल सिर्फ साफ कर रहा है

आवाजिकएम0 के दस आज्ञाओं ने फ़ॉर्मों को सक्षम किया

इससे पहले कि हम किसी भी कोड एमएसएम0 को लिखने से पहले MSCK1CK2 स्थापित करने दें

  1. बोलने में कठिनाई इनपुट है UGMK0 यह DOMCK1 COMS2 के स्रोत सिर्फ एक ही रास्ता क्षेत्र को भरने के लिए
  2. LM एक अनुवादक है UGMK0 यह अस्थायी बोली से डाटा निकालने वाला कुछ और नहीं
  3. राज्य मशीन स्वयं का फार्म प्रवाह UGMK0 रिपर्टीज कोड निर्धारित करता है कि क्षेत्र अगले क्या है
  4. पुष्टि नीति नीति नीति है (MMSCK0) UNMK0 दहलीज़ पर dreceds हैं और कोड एमएसके1 द्वारा लागू कर रहे हैं
  5. उपयोक्ता हमेशा ओवरराइड कर सकते हैं UGMK0 आवाज सुविधा अ खोलितMCK1 cRICK1 दबाव नहीं
  6. सब कुछ स्थानीय रूप से चलाता है ©MSS0 कोई बाहरी एपीआई निर्भरता को नहीं जो को API कार्य के लिए बनाए रखें
  7. हर संपर्क लॉग किया जाता है 2880 एमकेएफएस( डबल्यू) पूरे एडिटीटीट ट्रेप को डिबगिंग के लिए दिखाता है कि जब चीज गलत हो तो उसका पालन करना चाहिए
  8. वैधता प्रकार है mMMS0 आधारित AMMS0 मानक वैधMSCK1 MLLLAN( 2000) का अर्थ नहीं बताता
  9. फ़ॉर्म प्रसंग डिक्लासाइड है AMMS0 JSON फ़ॉर्म स्ट्रक्चरल एमके1 कोड इसका विश्लेषण करता है
  10. विफलता उत्कृष्ट है UNMS0 जब जीभ की पहचान नहीं होती है तो फ़ॉर्म अब भी काम करता है

यहाँ SGRMS0s इस तरह दिखता है कि अभ्यास एमएमएस1के1

flowchart LR
    A[User Speaks] --> B[Whisper STT]
    B --> C[Raw Transcript]
    C --> D[Ollama LLM]
    D --> E[Extracted Value]
    E --> F{Validation}
    F -->|Pass| G{Policy Check}
    F -->|Fail| H[Show Error]
    G -->|High Confidence| I[Auto-Confirm]
    G -->|Low Confidence| J[Ask User]
    J --> K{User Confirms?}
    K -->|Yes| L[State Machine: Next Field]
    K -->|No| M[Retry Recording]
    I --> L
    H --> M

    style D stroke:#f96,stroke-width:2px
    style F stroke:#6f6,stroke-width:2px
    style G stroke:#ff9,stroke-width:2px

ध्यान दीजिए कि कौन सी एम एमएसएम सीएम सीएम सीएस-0 इसका अनुवाद करता है।

यह DAVS0 क्या करता है

SGRMK0 स्कोप के बारे में साफ हो जाए

  • कोई स्वाभाविक वार्तालाप नहीं GESTMS0 यह एमकेएस1 एक गपशप-गॉट है... ... एक बार एमईएस3केके3
  • एडाप्टिव पूछताछ नहीं UGMK0 फ़ॉर्म स्कीमा स्मिट है स्थिर MS2MCBS2 MLLLLS2 mMK3 mS3MS3MS3 mSCKS2 का पालन करता है
  • कोई UGMK0 न्यू यॉर्क टाइम्सस्‌ एमके1 व्यक्‍तित्व नहीं है ULMK0 CLM CLARS2 यह छोटा टॉक3केस्क बनाने के लिए करता है
  • क्षेत्रों पर कोई संदर्भ नहीं TR- हर निकास से स्वतंत्र है CARSCMCK1 CLCS2KRT याद करते हैं जब ईएसएम3K के लिए पूछा जा रहा था

ये सीमाएँ हैं mMS0MMCK1 नहीं है, वे तंत्र को विजुचित करते हैं सुनिश्चित करने योग्य MS2MK2 mMK2KSCKKK2 और भरोसेमंद एमईएस44

परियोजना स्ट्रक्चर

WRMSS0 एक स्टैंड- ब्लॉरजर सर्वर ऐएसएसके1 का निर्माण करते हुए

Mostlylucid.VoiceForm/
├── Config/
│   └── VoiceFormConfig.cs         # Configuration binding
├── Models/
│   ├── FormSchema/                # Form definitions
│   ├── State/                     # Session state
│   └── Extraction/                # LLM input/output
├── Services/
│   ├── Stt/                       # Speech-to-text (Whisper)
│   ├── Extraction/                # Field extraction (Ollama)
│   ├── Validation/                # Type-based validators
│   ├── StateMachine/              # Form flow control
│   └── Orchestration/             # Coordinates everything
├── Components/
│   └── Pages/                     # Blazor UI
└── wwwroot/js/
    └── audio-recorder.js          # Web Audio API capture

आर्चाइटल नोटsMMS0 कोई सेवा पर निर्भर नहीं

आई. वी.

पहले TRSK0 आप TRSUCT1 CONT और ओलमा को स्थानीय रूप से चला रहा है... ... इन्हें अपने में जोड़ें devdeps-docker-compose.yml:

services:
  whisper:
    image: onerahmet/openai-whisper-asr-webservice:latest
    container_name: whisper-stt
    ports:
      - "9000:9000"
    environment:
      - ASR_MODEL=base.en
      - ASR_ENGINE=faster_whisper
    volumes:
      - whisper-models:/root/.cache/huggingface
    restart: unless-stopped

  ollama:
    image: ollama/ollama:latest
    container_name: ollama
    ports:
      - "11434:11434"
    volumes:
      - ollama-models:/root/.ollama
    restart: unless-stopped

volumes:
  whisper-models:
  ollama-models:

जब हम थक जाते हैं, तो हम एक आदर्श पेश करते हैं ।

docker exec -it ollama ollama pull llama3.2:3b

ऐसा क्यों? स्थानीय रूप से सब कुछ हो रहा है- स्थानीय रूप से एमएसएसएस5 मशीन छोड़ने के बारे में अच्छी तरह से MMS2MCK2 MSCTCTMSS3MMS4 और डेटा SMSSCK4 के बारे में जाँच कर सकते हैं आपका CIMSCK5 आपका CICKKKKK5 आपका CICKS(CKS5CKCKCKCKCKS5CKERSCKICKCKCKENCKCKCKCKENCKCONENKCKCONKCKCKCKCKCHANENENKCKCKCKCKENENGENES आपके मशीन को कोई भी नहीं रोका जा सकता

नोट डब्ल्यूएसएमके0 वह base.en अंग्रेजी एमएसके0 उत्पादन के लिए बन्दिंग मॉडल तेजी से और सही है . small.en या medium.en बेहतर सटीकता के लिए 0. 0एम0

फ़ॉर्म योजना योजनाmMS0GenericName

JSONMS0 में फ़ॉर्म परिभाषित किए गए हैं यह सत्य का एकमात्र स्रोत है जो कि क्षेत्र क्या है और कैसे वे MMCK1 का व्यवहार करते हैं

{
  "id": "customer-intake",
  "name": "Customer Intake Form",
  "fields": [
    {
      "id": "fullName",
      "label": "Full Name",
      "type": "Text",
      "prompt": "Please say your full name.",
      "required": true
    },
    {
      "id": "dateOfBirth",
      "label": "Date of Birth",
      "type": "Date",
      "prompt": "What is your date of birth?",
      "required": true,
      "confirmationPolicy": {
        "alwaysConfirm": true
      }
    },
    {
      "id": "email",
      "label": "Email Address",
      "type": "Email",
      "prompt": "What is your email address?",
      "required": true
    },
    {
      "id": "phone",
      "label": "Phone Number",
      "type": "Phone",
      "prompt": "What is your phone number?",
      "required": false
    },
    {
      "id": "notes",
      "label": "Additional Notes",
      "type": "Text",
      "prompt": "Any additional notes?",
      "required": false
    }
  ]
}

सीएसएम-0 मॉडल जो इस एमएमएस1 का प्रतिनिधित्व करते हैं

public record FormDefinition(
    string Id,
    string Name,
    List<FieldDefinition> Fields);

public record FieldDefinition(
    string Id,
    string Label,
    FieldType Type,
    string Prompt,
    bool Required = true,
    ConfirmationPolicy? ConfirmationPolicy = null);

public enum FieldType
{
    Text,
    Date,
    Email,
    Phone,
    Choice  // Constrained vocabulary - especially important for voice
}

public record ConfirmationPolicy(
    bool AlwaysConfirm = false,
    double ConfidenceThreshold = 0.85);

क्योंकि स्कीमा डीक्लासमएमके0 है क्षेत्रों में जोड़ने के लिए कभी राज्य मशीन को छूने की आवश्यकता नहीं हैAMMSS0 एक नया क्षेत्र परिभाषा JSONMMSCK1 में छोड़ दें और फ़ॉर्म स्वतः ही शामिल है सही प्रवाह2 के साथ

सरकार मशीन किटर्म-0 म्यूशन डिर्मोइन फ़ॉर्म फ्लो

यहाँ SGRMSS0 कोर अंतर्दृष्टि COMCK1 हालत में स्टेट मशीन एमएसएस-0 प्रयोग एआईUNMK0 यह 0. 203एम3 sclus शुद्ध CRSCK2 तर्क देता है जो प्रत्यक्ष नियमों पर आधारित संक्रमणों को निर्धारित करता है

public class FormStateMachine : IFormStateMachine
{
    private FormSession _session = null!;
    private int _currentFieldIndex;

    public FormSession StartSession(FormDefinition form)
    {
        _session = new FormSession
        {
            Id = Guid.NewGuid().ToString(),
            Form = form,
            Status = FormStatus.InProgress,
            StartedAt = DateTime.UtcNow,
            FieldStates = form.Fields.ToDictionary(
                f => f.Id,
                f => new FieldState { FieldId = f.Id, Status = FieldStatus.Pending })
        };

        // First field starts in progress
        if (form.Fields.Count > 0)
        {
            _session.FieldStates[form.Fields[0].Id].Status = FieldStatus.InProgress;
        }

        return _session;
    }

    public FieldDefinition? GetCurrentField()
    {
        if (_currentFieldIndex >= _session.Form.Fields.Count)
            return null;

        return _session.Form.Fields[_currentFieldIndex];
    }
}

राज्य संक्रमण स्पष्ट और जाँच योग्य है

public StateTransitionResult ProcessExtraction(
    ExtractionResponse extraction,
    ValidationResult validation)
{
    var currentField = GetCurrentField();
    if (currentField == null)
        return new StateTransitionResult(false, "No current field");

    var fieldState = _session.FieldStates[currentField.Id];
    fieldState.AttemptCount++;

    // Validation failed? Stay on current field
    if (!validation.IsValid)
    {
        return new StateTransitionResult(
            false,
            $"Validation failed: {validation.ErrorMessage}");
    }

    // Store the pending value
    fieldState.PendingValue = extraction.Value;
    fieldState.PendingConfidence = extraction.Confidence;

    // Check confirmation policy - this is rules, not AI
    var policy = currentField.ConfirmationPolicy
        ?? new ConfirmationPolicy();

    var needsConfirmation = policy.AlwaysConfirm
        || extraction.Confidence < policy.ConfidenceThreshold;

    if (needsConfirmation)
    {
        fieldState.Status = FieldStatus.AwaitingConfirmation;
        return new StateTransitionResult(
            true,
            "Please confirm this value",
            RequiresConfirmation: true);
    }

    // Auto-confirm high confidence values
    return ConfirmValue();
}

कुंजी पाइंट 0. 28: वह _currentFieldIndex पुष्टि करने पर केवल पुष्टि की गयी है एमएसएसएसएस5 पर प्रगति कभी नहीं करता इसका मतलब है एक विफल निकासी या अस्वीकार्य का मतलब है आप एक ही क्षेत्र एमएसके2 पर जारी रहता है।

पुष्टिात्मक तर्क DMMS0 यह SSSCM1 एक सरल नीति जांच MS2MS2MSCMSSK3 उच्च भरोसा नहीं alwaysConfirm GESTMSRSTRSCK1 CONTCKCYERTCK2 कम भरोसा या संवेदनशील क्षेत्र DMMS3 mMKSCKS से पूछता है उपयोक्ता %sK4map

TLMMSRSRSRIM: अनुवाद सिर्फ

ओएलमा को एक नौकरी से निकाले जाने वाले का काम है एमएसएसके.के.

public interface IFieldExtractor
{
    Task<ExtractionResponse> ExtractAsync(
        ExtractionContext context,
        CancellationToken ct = default);
}

public record ExtractionContext(
    FieldDefinition Field,
    string Prompt,
    string Transcript);

public record ExtractionResponse(
    string FieldId,
    string? Value,
    double Confidence,
    bool NeedsConfirmation,  // Suggestion only - policy has final say
    string? Reason);

महत्वपूर्ण एमएमएस0 सहेजनेवाले सुझाव दे सकते हैं NeedsConfirmation: trueUNMK0, लेकिन पुष्टि नीति हमेशा अंतिम कहते हैं कि अंतिम कहते हैं MMMSCK1 CLMS2MK2 STCKS राय है COMK3CKSCKS(CK4K4K4KR) स्वीकार नहीं करता है

और कार्यान्वयन 0. 0k0

public class OllamaFieldExtractor : IFieldExtractor
{
    private readonly HttpClient _httpClient;
    private readonly string _model;

    public async Task<ExtractionResponse> ExtractAsync(
        ExtractionContext context,
        CancellationToken ct = default)
    {
        var systemPrompt = BuildSystemPrompt(context.Field);
        var userPrompt = $"User said: \"{context.Transcript}\"";

        var request = new
        {
            model = _model,
            messages = new[]
            {
                new { role = "system", content = systemPrompt },
                new { role = "user", content = userPrompt }
            },
            format = "json",
            stream = false,
            options = new { temperature = 0.1 }  // Low = deterministic
        };

        var response = await _httpClient.PostAsJsonAsync(
            "/api/chat", request, ct);

        return ParseResponse(response, context.Field.Id);
    }
}

तापमान एसएसके0 हम चाहते हैं कि वोमएम उबाऊ हो और भविष्यवाणी करने योग्य एमएसएसएसएम0 ने एक ही मूल्य दे दिया है यह हर बार WMS2KCKCKECKCKCKESCSCSCK3CKKKESCSCKSCKSCKK3 के औसत स्तर कम करता है हम डेटा एनएसएसएसएस554 के लिए क्या चाहते हैं

तंत्र प्राम्प्ट सीमित भूमिकाmMS0 के बारे में स्पष्ट है

private string BuildSystemPrompt(FieldDefinition field)
{
    return $"""
        You are a data extraction assistant. Extract the {field.Label}
        from the user's speech.

        Field type: {field.Type}

        Return JSON only:
        {{
          "fieldId": "{field.Id}",
          "value": "<extracted value or null>",
          "confidence": <0.0-1.0>,
          "needsConfirmation": <true/false>,
          "reason": "<brief explanation>"
        }}

        Rules:
        - For dates, output ISO format (YYYY-MM-DD)
        - For emails, output lowercase
        - For phones, output digits only
        - If you can't extract, set value to null
        - Be conservative with confidence scores

        DO NOT:
        - Ask follow-up questions
        - Suggest next steps
        - Make assumptions beyond the transcript
        """;
}

TLMMS CRGRGRS CLM0 वैध प्रकार प्रारूपित करता है और विश्वास के बारे में रिपोर्ट करता है कि MMS2MCK2 यह MLK3 mCKRT का फ़ैसला करता है कि क्या होता है

ऑडियो रेकॉर्डर एमएसएसके0 खंगालक( AAV) मेंName

जावास्क्रिप्ट साइड पैन ऑडियो कैप्चर करता है तथा इसे ध्यान में रखता है UMMS0MMMKESMS4 में बदलता है.

window.voiceFormAudio = (function () {
    let mediaRecorder = null;
    let audioChunks = [];
    let audioContext = null;
    let dotNetRef = null;

    async function startRecording() {
        const stream = await navigator.mediaDevices
            .getUserMedia({ audio: true });

        audioContext = new AudioContext();
        audioChunks = [];

        const options = { mimeType: 'audio/webm;codecs=opus' };
        mediaRecorder = new MediaRecorder(stream, options);

        mediaRecorder.ondataavailable = (event) => {
            if (event.data.size > 0) {
                audioChunks.push(event.data);
            }
        };

        mediaRecorder.onstop = async () => {
            stream.getTracks().forEach(track => track.stop());

            const audioBlob = new Blob(audioChunks, { type: 'audio/webm' });
            const wavBlob = await convertToWav(audioBlob);
            const wavBytes = await wavBlob.arrayBuffer();

            // Send to Blazor
            const uint8Array = new Uint8Array(wavBytes);
            await dotNetRef.invokeMethodAsync(
                'OnRecordingComplete',
                Array.from(uint8Array));
        };

        mediaRecorder.start(100);
    }

    return { initialize, startRecording, stopRecording };
})();

VAVMS0 में परिवर्तन क्यों करें UNTCK4 विभिन्न फ़ॉर्मेटों को स्वीकार करता है, लेकिन WMSCS4CK4 एकल WALMS2MCK3 "ATCK3" सही रूप से जो मॉडल प्रशिक्षित किया गया है वह है जो सर्वर 0.2MS4 cRS4 cRS(CK5K5) पर आधारित स्तर पर आधारित किया गया है और RUCKSSSSCKSSSSSSSSSSSSCTCTCKS और फिर सेल परिवर्तनों को एक ही मूल रूप से लागू कर रहा है

वह convertToWav CURMS0JACKRIM3 MATICK2 OVICK2 आप WAV3 lV3 lKS4 को बख्श देगा लेकिन यह DUMSCK4 में reUCK4, लेकिन यह DUCK554 को रीमैप में reM5s पर निर्भर करता है

bjezor यूआईMRS0 दो एमएमएस1 CHART खाका

यूआई वर्तमान क्षेत्र को बाईं तरफ दिखाता है मौजूदा एमईएसटीएम0 पर, दाहिने तरफ सभी खेतों के साथ एक बाजू में दिखाई देता है भरोसे के लिए साइडबार मामलोंUNMK0 उपयोक्ता देख सकते हैं कि वे फार्म में कहाँ हैं WMSCK1 COS2K2 के उत्तर दिया है और क्या DMS444 के अगले स्क्यूकेकेकेकेकेकेकेकेकेकेकेकेकेकेस आ रहा है कोई आश्‍चर्य नहीं

graph LR
    subgraph "Left Panel"
        A[Current Field Prompt]
        B[Record Button]
        C[Transcript Display]
        D[Confirmation Dialog]
    end

    subgraph "Right Sidebar"
        E[Field 1: Full Name ✓]
        F[Field 2: DOB - Active]
        G[Field 3: Email - Pending]
        H[Field 4: Phone - Pending]
    end

    style F stroke:#36f,stroke-width:2px
    style E stroke:#6f6,stroke-width:2px

यहाँ (GSSSS0) बेस्जर पृष्ठ स्ट्रक्चरGenericName

@page "/voiceform/{FormId}"
@inject IFormOrchestrator Orchestrator
@rendermode InteractiveServer

<div class="top-bar">
    <h1>Voice Form</h1>
    <button class="theme-toggle" onclick="voiceFormTheme.toggle()">
        Dark Mode
    </button>
</div>

<main>
    <div class="voice-form-layout">
        <!-- Left: Active Field -->
        <div class="active-field-panel">
            @if (_currentField != null)
            {
                <div class="current-prompt">
                    <h2>@_currentField.Label</h2>
                    <p class="prompt-text">@_message</p>
                </div>

                <AudioRecorder OnAudioCaptured="HandleAudioCaptured"
                               IsRecording="_isRecording"
                               IsProcessing="_isProcessing" />

                @if (!string.IsNullOrEmpty(_transcript))
                {
                    <TranscriptDisplay Transcript="_transcript"
                                       Confidence="_transcriptConfidence" />
                }

                @if (_showConfirmation)
                {
                    <ConfirmationDialog ExtractedValue="_pendingValue"
                                        OnConfirm="HandleConfirm"
                                        OnReject="HandleReject" />
                }
            }
        </div>

        <!-- Right: Form Overview -->
        <div class="form-sidebar">
            <h3>@_session.Form.Name</h3>
            <div class="form-fields-list">
                @foreach (var field in _session.Form.Fields)
                {
                    var state = _session.GetFieldState(field.Id);
                    <div class="form-field-item @GetFieldClass(field, state)">
                        <div class="field-status-icon">
                            @GetStatusIcon(state.Status)
                        </div>
                        <div class="field-info">
                            <div class="field-name">@field.Label</div>
                            <div class="field-value">
                                @(state.Value ?? "Waiting")
                            </div>
                        </div>
                    </div>
                }
            </div>
        </div>
    </div>
</main>

नर - मादा, एक - साथ इसे लाने के लिए हरदम तैयार रहते हैं

ऑरदरर निर्देशांक सेवाएँ समर्थित करता हैMSCK0 इसके पास है इसका कोई शाखा दफ्तर तर्क नहींGESTMS0 सिर्फ सिफारिश सेवाओं को अनुक्रम में रखता है और परिणामों को एस्किके1 के साथ जारी करता है

public class FormOrchestrator : IFormOrchestrator
{
    private readonly ISttService _sttService;
    private readonly IFieldExtractor _extractor;
    private readonly IFormValidator _validator;
    private readonly IFormStateMachine _stateMachine;
    private readonly IFormEventLog _eventLog;

    public async Task<ProcessingResult> ProcessAudioAsync(byte[] audioData)
    {
        var currentField = _stateMachine.GetCurrentField();
        if (currentField == null)
            return ProcessingResult.Error("No current field");

        // Step 1: Speech to text
        var sttResult = await _sttService.TranscribeAsync(audioData);
        await _eventLog.LogAsync(new TranscriptReceivedEvent(
            currentField.Id, sttResult.Transcript, sttResult.Confidence));

        // Step 2: Extract structured value
        var context = new ExtractionContext(
            currentField, currentField.Prompt, sttResult.Transcript);
        var extraction = await _extractor.ExtractAsync(context);
        await _eventLog.LogAsync(new ExtractionAttemptEvent(
            currentField.Id, extraction));

        // Step 3: Validate
        var validation = _validator.Validate(currentField, extraction.Value);

        // Step 4: State machine decides next step
        var transition = _stateMachine.ProcessExtraction(extraction, validation);

        return new ProcessingResult(
            Success: transition.Success,
            Message: transition.Message,
            Session: _stateMachine.GetSession(),
            RequiresConfirmation: transition.RequiresConfirmation,
            PendingValue: extraction.Value);
    }
}

हर कदम स्वतंत्र है और जांचयोग्य एमएसके0 नेटवर्क को कभी नहीं छूता©MK0LLLLM कभी स्थिति को छू नहीं सकते.

विन हेतु गहरा मोड

सीएसएस कस्टम गुण के साथ गहरा मोड समर्थित हैcolombie. kgm

:root {
    --bg-primary: #f8fafc;
    --bg-secondary: #ffffff;
    --text-primary: #1e293b;
    --accent-blue: #3b82f6;
    --accent-green: #22c55e;
}

[data-theme="dark"] {
    --bg-primary: #0f172a;
    --bg-secondary: #1e293b;
    --text-primary: #f1f5f9;
    --accent-blue: #60a5fa;
    --accent-green: #4ade80;
}

body {
    background: var(--bg-primary);
    color: var(--text-primary);
}

प्रसंग टॉगल स्थानीय प्लैटोरेशन के द्वारा जारी रहता है एमके0

window.voiceFormTheme = (function () {
    const THEME_KEY = 'voiceform-theme';

    function toggle() {
        const current = document.documentElement
            .getAttribute('data-theme') || 'light';
        const newTheme = current === 'dark' ? 'light' : 'dark';
        document.documentElement.setAttribute('data-theme', newTheme);
        localStorage.setItem(THEME_KEY, newTheme);
    }

    // Initialize from saved preference or system preference
    function init() {
        const saved = localStorage.getItem(THEME_KEY);
        const systemDark = window.matchMedia(
            '(prefers-color-scheme: dark)').matches;
        const theme = saved || (systemDark ? 'dark' : 'light');
        document.documentElement.setAttribute('data-theme', theme);
    }

    return { toggle, init };
})();

गुज़र रहा है एमईएस-0 इकाई जाँचEMMSCK1 ब्राउज़र संयोजन

PRICMS0 का परीक्षण करने में सामग्री प्रदान करता है यहाँ SMSCK1 एक राज्य मशीन इकाई खुश पथके लिए जाँच

[Fact]
public void ProcessExtraction_HighConfidence_AutoConfirms()
{
    // Arrange
    var form = CreateTestForm();
    var stateMachine = new FormStateMachine();
    stateMachine.StartSession(form);

    var extraction = new ExtractionResponse(
        FieldId: "fullName",
        Value: "John Smith",
        Confidence: 0.95,  // High confidence
        NeedsConfirmation: false,
        Reason: "Clear speech");

    var validation = ValidationResult.Success();

    // Act
    var result = stateMachine.ProcessExtraction(extraction, validation);

    // Assert
    result.Success.Should().BeTrue();
    result.RequiresConfirmation.Should().BeFalse();

    var fieldState = stateMachine.GetSession()
        .GetFieldState("fullName");
    fieldState.Status.Should().Be(FieldStatus.Confirmed);
    fieldState.Value.Should().Be("John Smith");
}

और यहाँ STMSS0 एक नकारात्मक परीक्षा SMSCK1 स्मिट सेनाएं चाहे जो भी हो, पुष्टि करें कि एमएमएमएमएमके0 का सुझाव देता है

[Fact]
public void ProcessExtraction_LowConfidence_RequiresConfirmation()
{
    // Arrange
    var form = CreateTestForm();
    var stateMachine = new FormStateMachine();
    stateMachine.StartSession(form);

    var extraction = new ExtractionResponse(
        FieldId: "fullName",
        Value: "John Smith",
        Confidence: 0.65,  // Below threshold
        NeedsConfirmation: false,  // LLM says no, but policy overrides
        Reason: "Noisy audio");

    var validation = ValidationResult.Success();

    // Act
    var result = stateMachine.ProcessExtraction(extraction, validation);

    // Assert
    result.RequiresConfirmation.Should().BeTrue(
        "Policy threshold (0.85) should override LLM suggestion");

    var fieldState = stateMachine.GetSession()
        .GetFieldState("fullName");
    fieldState.Status.Should().Be(FieldStatus.AwaitingConfirmation);
}

और एक पुख्ता ब्राउज़र की जांच है कि वास्तव में mMCK0 चीजों को क्लिक करता है

[Fact]
public async Task HomePage_ThemeToggle_ShouldSwitchTheme()
{
    await _page!.GoToAsync(BaseUrl);
    await _page.WaitForSelectorAsync(".theme-toggle");

    var initialTheme = await _page.EvaluateFunctionAsync<string?>(
        "() => document.documentElement.getAttribute('data-theme')");

    // Click toggle
    await _page.ClickAsync(".theme-toggle");
    await Task.Delay(100);

    var newTheme = await _page.EvaluateFunctionAsync<string?>(
        "() => document.documentElement.getAttribute('data-theme')");

    newTheme.Should().NotBe(initialTheme);
}

[Fact]
public async Task VoiceFormPage_Sidebar_ShouldShowAllFields()
{
    await _page!.GoToAsync($"{BaseUrl}/voiceform/customer-intake");
    await _page.WaitForSelectorAsync(".form-fields-list");

    var fieldItems = await _page.QuerySelectorAllAsync(".form-field-item");

    fieldItems.Should().HaveCount(5, "Customer intake form has 5 fields");
}

पूरा टेस्ट सूट sMMK0 जाँच करता हैLMCK1 इकाई को व्यापार तर्क के लिए जाँच करता है TMS2MK2 mMK3KKKK3CKKKKK3GENCK4444 जाँच करता है

ऐसा क्यों कहा जा सकता है?

WRMK0 बार फिर से जाँच करें क्यों हम इसे इस तरह के एमएसके1 को बनाने के लिए

graph TD
    subgraph "Traditional Voice Form"
        A1[User Speaks] --> B1[LLM]
        B1 --> C1[LLM decides field]
        C1 --> D1[LLM validates]
        D1 --> E1[LLM confirms]
        E1 --> F1[LLM advances form]
    end

    subgraph "Ten Commandments Approach"
        A2[User Speaks] --> B2[Whisper STT]
        B2 --> C2[Ollama Extract]
        C2 --> D2[C# Validator]
        D2 --> E2[Policy Check]
        E2 --> F2[State Machine]
    end

    style B1 stroke:#f96,stroke-width:2px
    style C1 stroke:#f96,stroke-width:2px
    style D1 stroke:#f96,stroke-width:2px
    style E1 stroke:#f96,stroke-width:2px
    style F1 stroke:#f96,stroke-width:2px

    style C2 stroke:#f96,stroke-width:2px
    style D2 stroke:#6f6,stroke-width:2px
    style E2 stroke:#6f6,stroke-width:2px
    style F2 stroke:#6f6,stroke-width:2px

पारंपरिक दृष्टिकोण में एमएमके0 सब कुछLL हैTRMSS0 हर निर्णय गैर गैर एमईएसएस3 निशानियाँ है

हमारे पास DBSCK0 में TLM करता है एक बातUNMK554 जाँच और DUCK5 के बारे में कारण जब कुछ गलत हो जाता है तो आप सही रूप से पता लगा सकते हैं क्यों एमएसएम5 के लिए कर सकते हैं

यह निर्देश है एमएमएसएमएफएसएफएसएफएस5 और एमईएसएम3एमएफएमएसएसएफएसएफएसएफएम का अनुवाद ऑन्ड मशीन को संचालित करते हुए सुनिश्चित करता है

खुद से निकलना

  1. डिपेंडेंसीज़ डिपेंडेंसीज़ प्रारंभ करेंMMS0
docker compose -f devdeps-docker-compose.yml up -d
docker exec -it ollama ollama pull llama3.2:3b
  1. एएसएमके0 चलाएँ
cd Mostlylucid.VoiceForm
dotnet run
  1. यहाँ नेविगेट करें http://localhost:5000

  2. क्लिक करें sMK0CKRICKTCKSICKSERSTENK2"

कंटेनमेंट

आवाज अंतरफलक CURSCT TBST TBSUSURT2 के रूप में भाषा का इलाज करने के लिए किया जा रहा है सिर्फ एक और इनपुट विधि MS2MS2LLLLLLLLLLLLLLL के रूप में और PRSS4 में प्रवाहित शीर्ष पर नियंत्रण जारी रखने के लिए आप प्राप्त करने के लिए प्राप्त करने के लिए है

  • वर्णनयोग्य व्यवहार AMMS0 उसी तरह का इनपुट काफिरM3के1 एक ही आउटपुट
  • जांच योग्य तर्क GESTMS0 इकाई व्यापार नियमों के लिए जाँच करता है
  • सुनने योग्य निर्णय UNMS0 हर स्थिति संक्रमण लॉग किया जाता है
  • अनुग्रहपूर्ण अपमान 2880 एमएस- 2000 आवाज बन्द नहीं करता है इसके बजाय एमएमएस1 क़िस्म
  • स्थानीय ऑपरेशन SI- कोर कार्यशीलता के लिए कोई बादल डिपेंडेंसीज़ नहीं

एम. एस. एआई को उचित जगह पर रखनाWERMS0 एक शक्तिशाली उपकरण है जो मानव गंदगी और कंप्यूटर तेजी के बीच अनुवाद करता है, एक दर्शन जो हमारे लिए फैसले बनाता है

अब कुछ निर्माण करें जहाँ आप एमएसकेएक्सॉटन मॉडल एमके1केस नहीं, जो अगले एमएसएस2 का होता है क्या होता है

पार्ट 2880एमकेस्क में आ रहा है

अभी ROMS0 उपयोक्ता पढ़ता है और प्रतिक्रियाMMSCK1 कहते हैं लेकिन क्या हो सकता है यदि तंत्र कर सकता है पीछे से बोलेंGESTMS0 भाग 0. 0 CLMCTCTCTCTM2MMKSM3MMMKSMS3MK4 त्वरित इसे एक पूर्ण रूप से बदल देता है

  • पढ़ने का आग्रह ज़ोर से. AMMS0 AMMSCK1 कृपया अपना पूरा नाम कहे कि एलएमईएसके2
  • अभिलेखन की पुष्टि करें AMMS0 © 2002- 2002 हमने सुना था कि सही एमईएसएस3के3
  • ऑडियो स्थिति क्यूँ UNTCKSINT3 प्रक्रिया शुरू होने के लिए ध्वनि
  • WO- फ्री ऑपरेशन WMS0 पूर्ण फ़ॉर्म स्क्रीन पर देखने के बिना पूर्ण रूप से पूरा फ़ॉर्म

बिल्डर पहले ही तैयार किया जा रहा है राज्य मशीन 0. 0 स्थापित किया जा रहा है

शीघ्र ही आ रहा है एमएमके0

आगे पढ़ा जा रहा है

पूरा स्रोत कोड अंदर है Mostlylucid.VoiceForm परियोजना को रीपोएम0 में

Finding related posts...
logo

© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.