Azure Speech Pronunciation Assessment (ja-JP): Missing scores and 6–7s latency under concurrent requests

JP-Speech-Dev 0 Reputation points
2026-10-14T11:53:52.8333333+00:00

Hello Azure Speech community,

We are investigating intermittent high latency and missing pronunciation assessment results when using Azure AI Speech.

Environment

  • Service: Azure AI Speech, Standard S0, Japan East

SDK: Microsoft Cognitive Services Speech SDK for Python 1.50.0

Language: ja-JP

API: SpeechRecognizer.recognize_once()

Assessment mode: Unscripted (reference_text="")

Grading system: HundredMark

Granularity: FullText

enable_miscue=False

Audio: A short WAV sample, approximately 1.75 seconds, 16 kHz, 16-bit, mono

A new SpeechRecognizer is created for each request.

Issue 1: Intermittent high latency

At low request rates, recognition typically completes in approximately 0.4–0.7 seconds.

In a controlled test using the same WAV sample for 180 requests at approximately 3 requests per second:

Median duration around recognize_once(): 1,102 ms

p95 duration around recognize_once(): 6,772 ms

42/180 requests took longer than 3 seconds.

Some slow calls clustered around 6.7–7.3 seconds.

SpeechServiceResponse_RecognitionLatencyMs accounted for more than 99% of the measured recognition-call duration in the slow cases.

The additional latency appears to occur within the SDK-reported recognition interval. This metric does not identify whether the underlying delay is caused by service processing, queueing, network operations, or SDK behavior.

Issue 2: RecognizedSpeech without pronunciation assessment scores

In the same test:

162/180 requests returned usable pronunciation assessment results.

18/180 returned ResultReason.RecognizedSpeech, but the SDK-visible SpeechServiceResponse_JsonResult did not contain a PronunciationAssessment block.

All 18 missing-assessment cases took approximately 6.7–7.3 seconds.

Azure resource metrics reported:

TotalCalls: 180

  SuccessfulCalls: 180
  
     TotalErrors: 0
     
        BlockedCalls: 0
        

An earlier test at a similar request rate showed latency spikes but no missing assessment blocks.

The missing assessment results are correlated with the longer recognition times, but the underlying cause has not been established.

Questions

Under what conditions can unscripted Pronunciation Assessment return RecognizedSpeech without the PronunciationAssessment block?

Are there known latency, concurrency, SDK, or service-side capacity limitations for Japanese (ja-JP) Pronunciation Assessment in Japan East?

What could explain the repeated 6–7-second recognition latency, especially when no throttling or service errors are reported?

What supported configuration or request pattern would Microsoft recommend to improve response time and scoring reliability under concurrent usage?

Are there documented differences in latency or reliability between scripted and unscripted Pronunciation Assessment for ja-JP?

We would appreciate technical guidance on the possible causes and recommended mitigations.

We can provide the exact test window, relevant service request IDs, and additional diagnostics through a private support channel if necessary.

Thank you.Hello Azure Speech community,

We are investigating intermittent high latency and missing pronunciation assessment results when using Azure AI Speech.

Environment

Service: Azure AI Speech, Standard S0, Japan East

SDK: Microsoft Cognitive Services Speech SDK for Python 1.50.0

Language: ja-JP

API: SpeechRecognizer.recognize_once()

Assessment mode: Unscripted (reference_text="")

Grading system: HundredMark

Granularity: FullText

enable_miscue=False

Audio: A short WAV sample, approximately 1.75 seconds, 16 kHz, 16-bit, mono

A new SpeechRecognizer is created for each request.

Issue 1: Intermittent high latency

At low request rates, recognition typically completes in approximately 0.4–0.7 seconds.

In a controlled test using the same WAV sample for 180 requests at approximately 3 requests per second:

Median duration around recognize_once(): 1,102 ms

p95 duration around recognize_once(): 6,772 ms

42/180 requests took longer than 3 seconds.

Some slow calls clustered around 6.7–7.3 seconds.

SpeechServiceResponse_RecognitionLatencyMs accounted for more than 99% of the measured recognition-call duration in the slow cases.

The additional latency appears to occur within the SDK-reported recognition interval. This metric does not identify whether the underlying delay is caused by service processing, queueing, network operations, or SDK behavior.

Issue 2: RecognizedSpeech without pronunciation assessment scores

In the same test:

162/180 requests returned usable pronunciation assessment results.

18/180 returned ResultReason.RecognizedSpeech, but the SDK-visible SpeechServiceResponse_JsonResult did not contain a PronunciationAssessment block.

All 18 missing-assessment cases took approximately 6.7–7.3 seconds.

Azure resource metrics reported:

TotalCalls: 180

  SuccessfulCalls: 180
  
     TotalErrors: 0
     
        BlockedCalls: 0
        

An earlier test at a similar request rate showed latency spikes but no missing assessment blocks.

The missing assessment results are correlated with the longer recognition times, but the underlying cause has not been established.

Questions

Under what conditions can unscripted Pronunciation Assessment return RecognizedSpeech without the PronunciationAssessment block?

Are there known latency, concurrency, SDK, or service-side capacity limitations for Japanese (ja-JP) Pronunciation Assessment in Japan East?

What could explain the repeated 6–7-second recognition latency, especially when no throttling or service errors are reported?

What supported configuration or request pattern would Microsoft recommend to improve response time and scoring reliability under concurrent usage?

Are there documented differences in latency or reliability between scripted and unscripted Pronunciation Assessment for ja-JP?

We would appreciate technical guidance on the possible causes and recommended mitigations.

We can provide the exact test window, relevant service request IDs, and additional diagnostics through a private support channel if necessary.

Thank you.

Azure Speech in Foundry Tools

1 answer

Sort by: Most helpful
  1. AI answer

    2026-10-14T11:55:16.81+00:00

    The correlated 6–7-second plateau and omitted PronunciationAssessment payload require a Microsoft support investigation; capture SDK logs and service request IDs from affected and unaffected calls while preserving the current reproducible workload.

    What the results establish

    • ja-JP is supported for Pronunciation Assessment and is available in all speech-to-text regions, so this is not an unsupported-locale configuration. ^1^
    • There is no currently documented Speech known issue matching ja-JP, Japan East, Python SDK 1.50.0, a 6–7-second plateau, or missing Pronunciation Assessment blocks. ^2^
    • The default S0 limit is 100 concurrent real-time speech-to-text and speech-translation requests combined. Three request starts per second does not itself show that this concurrency limit was reached; actual overlapping sessions must be measured. ^3^
    • BlockedCalls=0 means no calls were recorded as exceeding a rate or quota limit. SuccessfulCalls records successful calls, while TotalErrors records 4xx/5xx responses; these metrics do not validate that an optional assessment object was present in a successful response. ^4^
    • SpeechServiceResponse_RecognitionLatencyMs is measured from the last contributing audio fragment received by the SDK until the final service result is received. It therefore includes the final-result path but does not isolate backend processing, queueing, or network delay. ^5^

    Consequently, neither throttling nor a specific timeout can be inferred from the 6–7-second cluster. The open SDK report matching this exact configuration and symptom has not yet established a cause or workaround. ^6^

    Capture an escalation-ready trace

    Enable one process-wide SDK log, then record the service request ID, recognition latency, result reason, JSON presence, wall time, and UTC timestamp for every call:

    import json, time
    import azure.cognitiveservices.speech as speechsdk
    
    speech_config.set_property(
        speechsdk.PropertyId.Speech_LogFilename, "speech-sdk.log"
    )
    
    started = time.time()
    result = recognizer.recognize_once()
    props = result.properties
    
    raw = props.get_property(
        speechsdk.PropertyId.SpeechServiceResponse_JsonResult
    )
    request_id = props.get_property(
        speechsdk.PropertyId.SpeechServiceResponse_RequestId
    )
    latency = props.get_property(
        speechsdk.PropertyId.SpeechServiceResponse_RecognitionLatencyMs
    )
    
    payload = json.loads(raw) if raw else {}
    print(request_id, latency, time.time() - started,
          result.reason, "PronunciationAssessment" in raw)
    

    Speech SDK logging is process-wide, so concurrent recognizers write interleaved entries to the same log; separate per-recognizer log files are not supported. ^7^

    Provide Microsoft support with:

    1. The exact UTC test window and Speech resource region.
    2. Request IDs for several fast/scored and slow/unscored calls.
    3. The SDK log, minimal runnable reproducer, WAV file, Python/OS versions, and concurrency scheduler.
    4. Per-request start/end timestamps and peak in-flight request count.
    5. The raw JSON responses, with credentials and other sensitive data removed.

    Supported mitigation to evaluate

    If the application already knows the expected Japanese text—or can first obtain it using normal STT—run scripted assessment with that text instead of reference_text="". Microsoft documents that unscripted assessment uses a different STT model and recommends first obtaining reference text with Azure STT, then performing scripted assessment when accurate recognized text is required. ^8^

    Treat this as an alternative scoring architecture, not a documented latency fix:

    1. Call standard STT for the audio.
    2. Use the resulting text as reference_text.
    3. Apply Pronunciation Assessment to a new recognition pass.
    4. Accept a result only when the expected assessment block exists.
    5. Retry missing-assessment results with bounded backoff and a strict retry limit; retain both request IDs.

    The documentation confirms different result sets and models for scripted versus unscripted assessment, but it does not publish a ja-JP latency or reliability advantage for either mode. For this 1.75-second file, recognize_once() is appropriate: it returns after one utterance ends through silence detection, up to about 30 seconds. ^9^

    Avoid changing segmentation timeouts or moving to continuous recognition solely to address this plateau; no supplied documentation ties either change to missing Pronunciation Assessment payloads for short prerecorded audio.


    References

    1. Language and Voice Support for Azure Speech - Foundry Tools
    2. Azure Speech in Foundry Tools known issues - Foundry Tools
    3. Quotas and limits for Azure Speech
    4. Supported metrics for Microsoft.CognitiveServices/accounts
    5. Namespace Microsoft::CognitiveServices::Speech
    6. #3094 Pronunciation Assessment (ja-JP, unscripted): ~6.8 s latency plateau and missing PronunciationAssessment block at ~3 requests/second
    7. Enable logging in the Speech SDK (programming-language-python)
    8. Use pronunciation assessment (programming-language-objectivec)
    9. Recognizer Class-Methods
    AI-generated content may be incorrect. Read our transparency notes for more information.

    Was this answer helpful?

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.