Azure STT: pronunciation assessment on the streaming recognizer
メンテナーはふだん 1 日以内に返信
評価
- 難易度
- 3/5
- 見積もり時間
- 1〜2日
- 初心者へのやさしさ
- 55/100
- issue の種類
- 機能追加
- 明瞭さ
- 明確に書かれている
- 活発さ
- 活発
- 技術スタック
- azure, python
調査の方向性
Start by reading the Azure STT implementation in stt.py and its unit tests; the issue says the recognizer setup and _on_recognized are the relevant entry points. Check how SpeechData.metadata is populated for final transcripts, then compare the fork implementation linked in the issue. Done means an optional pronunciation assessment config adds Azure’s scores to each final transcript while leaving default behavior unchanged.
索引モデルが issue の本文から書いたものです。
説明
Feature Type
Would make my life easier
Feature Description
We're building a Japanese learning app on top of LiveKit Agents and we score the learner's pronunciation with Azure's pronunciation assessment.
Right now the Azure plugin doesn't let you touch the recognizer before it starts, and _on_recognized only keeps the text. So to get scores we have to send the same audio to Azure a second time, which means paying for the transcription twice.
Azure supports pronunciation assessment directly on continuous recognition: you just apply a PronunciationAssessmentConfig to the recognizer, and every final result comes back with the scores in its JSON.
What I'd like:
- an optional
pronunciation_assessment: speechsdk.PronunciationAssessmentConfigonazure.STT - the assessment attached to each final transcript, in
SpeechData.metadata["pronunciation_assessment"](the field is already there for plugin specific data)
Off by default, so nothing changes for anyone else.
Workarounds / Alternatives
- Second request to Azure with the recorded audio after each turn: works, but double billing and extra latency.
- Patching the plugin's private methods (
_on_recognized, recognizer creation): works too, but it breaks on any plugin update, so we had to pinlivekit-plugins-azure. - Forking the whole STT in our codebase: that's what we have now, I'd rather not maintain it.
Additional Context
I already have a small implementation on a fork (~40 lines in stt.py + unit tests), tested against the real Azure service with Japanese audio, scores come back on every final:
https://github.com/Bilnaa/agents/tree/azure-recognizer-hooks
Happy to open the PR if the approach looks ok to you, or change the shape of it (e.g. a generic recognizer setup callback instead).
- 主要言語
- Python
- スター
- 14.6k
- フォーク
- 3.9k
- 平均マージ
- 3日 21時間
- マージ済み PR(30日)
- 197
環境構築
このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
livekit/agents のほかの issue
-
Assistant markup is stripped from chat history when expressive mode is off対応中かも @ShivamSharma43 が 15 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
メンテナーはふだん 1 日以内に返信
-
docs: openai.LLM vs openai.responses.LLM for HTTP OpenAI-compat hosts再び着手できるかも @AbarnaaSree が 55 日前に担当しましたが、オープン中のプルリクエストはありません。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
livekit/agents#7022 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
Anthropic plugin ignores parallel_tool_calls=False unless tool_choice is also set対応中かも @sarankumar1325 が 1 日前に担当しました。 オープンbug
難易度 2/5 1〜3時間 初心者へのやさしさ 30/100
メンテナーはふだん 1 日以内に返信
-
OpenAI Realtime engine: expose the WebSocket close code and reason to subclasses対応中かも @ninglinLiu が 1 日前に担当しました。 オープン
難易度 3/5 1〜2日 初心者へのやさしさ 35/100
メンテナーはふだん 1 日以内に返信
-
enhancement
難易度 4/5 3〜5日 初心者へのやさしさ 38/100
メンテナーはふだん 1 日以内に返信
似ている issue
-
good first issue infrastructure
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
kuznia-rdzeni/coreblocks#1135 ·
-
good first issue server
難易度 2/5 1〜3時間 初心者へのやさしさ 85/100
メンテナーはふだん 1 日以内に返信
-
documentation priority: high
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
a-lex-s/mealie-telegram-bot#54 ·
メンテナーはふだん 1 日以内に返信
-
type/test
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
SaltedTan/virgil-language-server#218 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 83/100
btclib-org/btclib-wallet#541 ·
メンテナーはふだん 1 日以内に返信