Skip to content

Add realtime translation feature on Meeting Menutes Page #1199

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 21 commits into from
Aug 7, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
ca1f1c2
refactoring meeting minutes
sugusugiaws Jul 21, 2025
5a84f8e
refactoring meeting minutes
sugusugiaws Jul 21, 2025
8a231a5
議事録の折り畳み機能を実装
sugusugiaws Jul 21, 2025
1f0aed5
議事録の折り畳み機能を実装
sugusugiaws Jul 21, 2025
e2055b4
MeetingMinutes の表示方法を、セグメントごとの見栄えに変更
sugusugiaws Aug 2, 2025
c175153
MeetingMinutes の表示方法を、セグメントごとの見栄えに変更
sugusugiaws Aug 2, 2025
a490636
Rendering の Bug で無限レンダリングしていた問題を修正
sugusugiaws Aug 2, 2025
88f508a
まずはいったんリアルタイム翻訳の動作確認ができた状態
sugusugiaws Aug 2, 2025
fe9b31c
Language の指定が出来ていなかった問題の修正
sugusugiaws Aug 2, 2025
834f14a
リアルタイム翻訳の見栄えの調整
sugusugiaws Aug 2, 2025
6da36db
リアルタイム翻訳の見栄えの調整
sugusugiaws Aug 2, 2025
8690de3
リアルタイム翻訳の精度を向上するためのコンテキスト機能の追加
sugusugiaws Aug 2, 2025
8137f51
一度録音が止まって再開する場合に追記する機能を追加
sugusugiaws Aug 2, 2025
1e0cdcf
録音が Websocket 切断などの理由で止まった場合に、エラーの表示
sugusugiaws Aug 2, 2025
a398255
リアルタイム翻訳モデルの表示名の問題修正
sugusugiaws Aug 2, 2025
4d73b6a
接続が途中で切れたときに音を出す実装をやめる。再録画ができるようになったため、音はノイズとなる
sugusugiaws Aug 2, 2025
80ca6af
MeetingMinutes 用のディレクトリを作成し、そこに Component 群を格納
sugusugiaws Aug 4, 2025
e560520
リアルタイム翻訳に利用するモデルについて、独自のソートロジックではなく、light モデルを利用するように変更
sugusugiaws Aug 4, 2025
031e3fe
type directoryを作成するのは規模が大きすぎたため、Meeting Minutes Page に Type を定義した
sugusugiaws Aug 6, 2025
e97e480
ScreenAudioToggle で表示するテキストは、再利用性を高めるため、コンポーネントの外側で定義するように変更
sugusugiaws Aug 6, 2025
c754740
useRealtimeTranslate.ts と useOneshotTranslation.ts で同じ処理を重複で実装していたため、…
sugusugiaws Aug 6, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 8 additions & 2 deletions packages/common/src/application/model.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,10 @@ export const modelMetadata: Record<string, ModelMetadata> = {
displayName: 'Claude 3.5 Sonnet v2',
},
'anthropic.claude-3-5-haiku-20241022-v1:0': {
flags: MODEL_FEATURE.TEXT_DOC_IMAGE,
flags: {
...MODEL_FEATURE.TEXT_DOC_IMAGE,
...MODEL_FEATURE.LIGHT,
},
displayName: 'Claude 3.5 Haiku',
},
'anthropic.claude-3-5-sonnet-20240620-v1:0': {
Expand Down Expand Up @@ -81,7 +84,10 @@ export const modelMetadata: Record<string, ModelMetadata> = {
displayName: 'Claude 3.5 Sonnet v2',
},
'us.anthropic.claude-3-5-haiku-20241022-v1:0': {
flags: MODEL_FEATURE.TEXT_DOC_IMAGE,
flags: {
...MODEL_FEATURE.TEXT_DOC_IMAGE,
...MODEL_FEATURE.LIGHT,
},
displayName: 'Claude 3.5 Haiku',
},
'us.anthropic.claude-3-5-sonnet-20240620-v1:0': {
Expand Down
30 changes: 27 additions & 3 deletions packages/web/public/locales/translation/en.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -39,13 +39,16 @@ common:
cancel: Cancel
clear: Clear
close: Close
collapse: Collapse
colon: ':'
complete: Complete
create: Create
delete: Delete
enter_text: Enter text
error: An error occurred
errorNoSuggestions: No suggestions were found.
execute: Execute
expand: Expand
export: Export
feedback_received: Feedback received. Thank you.
here: here
Expand All @@ -58,6 +61,7 @@ common:
not_available: Not available
not_selected: Not selected
optional: Optional
other: Other
previous: Previous
required: Required
reviewComplete: Review completed
Expand Down Expand Up @@ -657,19 +661,22 @@ mcp_chat:
title: MCP Chat
meetingMinutes:
auto_generate: Auto Generate
clear_minutes: Clear Minutes
custom_prompt: Custom Prompt
custom_prompt_placeholder: Enter your custom prompt for generating meeting minutes...
frequency: Generation Frequency
frequency_10min: Every 10 minutes
frequency_1min: Every 1 minute
frequency_3min: Every 3 minutes
frequency_5min: Every 5 minutes
generate: Generate
generate_minutes_header: Generate Meeting Minutes
generated_minutes: Generated Minutes
generating: Generating minutes...
generation_error: Failed to generate meeting minutes. Please try again.
generation_frequency: Generation Frequency
generation_success: Meeting minutes generated successfully
language: Language
language: Transcription Language
language_auto: Auto Detect
language_chinese: Chinese
language_english: English
Expand All @@ -679,14 +686,21 @@ meetingMinutes:
language_vietnamese: Vietnamese
last_generated: Last generated {{time}}
minutes_placeholder: Minutes will appear here after generation
model: Model
model: Meeting Minutes Generation Model
new_recording_session: New Recording Session
next_generation: Next Generation
next_generation_in: 'Next generation in : '
no_transcript: No Transcript
partial_indicator: (...)
record_transcribe: Record & Transcribe
screen_audio_error: Screen Audio Error
speech_recognition: Speech Recognition
style: Minutes Style
style_custom: Custom
style_detail: Detail
style_faq: FAQ
style_newspaper: Newspaper
style_summary: Summary
style_transcription: Transcription
title: Meeting Minutes Generator
transcript: Transcript
Expand Down Expand Up @@ -844,7 +858,7 @@ transcribe:
mic_input: Microphone Input
result_placeholder: Speech recognition results will be displayed here
screen_audio: Screen Audio
screen_audio_error: 'Screen Audio Error:'
screen_audio_error: Screen Audio Error
screen_audio_notice: 'For Windows: Select "Entire Screen" tab and turn ON "Share system audio".<br/>For Mac: Select "Chrome Tab" and turn ON "Also share tab audio".<br/>Chrome and Edge work. Firefox does not work.'
select_input_method: Please select from microphone input or file upload
speaker_names: Speaker names (comma separated)
Expand All @@ -858,11 +872,21 @@ translate:
additional_context_placeholder: You can enter additional points to consider (e.g., casualness, etc.)
auto_detect_language: Auto detect language
auto_translate: Auto translate
contextHelp: Context information helps improve translation accuracy by providing background information about the meeting.
continue_output: Continue output
enter_text: Enter text
model: Real-time Translation Model
realtimeTranslation: Real-time Translation
result_placeholder: Translation results will be displayed here
systemGeneratedContext: System-generated Context
systemGeneratedContextPlaceholder: Auto-generated context based on the meeting content
target_language: Real-time Translation Language
text_to_translate: Text to translate
title: Translate
translating: Translating...
translation: Translation
userDefinedContext: User-defined Context
userDefinedContextPlaceholder: 'Enter context to improve translation accuracy (e.g., meeting topic, technical terms, etc.)'
useCaseBuilder:
accessError: Access Error
addInputExample: Add Input Example
Expand Down
31 changes: 28 additions & 3 deletions packages/web/public/locales/translation/ja.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -37,13 +37,16 @@ common:
cancel: キャンセル
clear: クリア
close: 閉じる
collapse: 折りたたみ
colon: ':'
complete: 完了
create: 作成
delete: 削除
enter_text: 入力してください
error: エラー
errorNoSuggestions: 候補が見つかりませんでした。
execute: 実行
expand: 展開
export: エクスポート
feedback_received: フィードバックを受け付けました。ありがとうございます。
here: こちら
Expand All @@ -56,6 +59,7 @@ common:
not_available: 取得できませんでした
not_selected: 選択されていません
optional: 任意
other: その他
previous: 前
required: 必須
reviewComplete: レビュー完了
Expand Down Expand Up @@ -518,19 +522,23 @@ mcp_chat:
title: MCP チャット
meetingMinutes:
auto_generate: 自動生成
clear_minutes: 議事録をクリア
custom_prompt: カスタムプロンプト
custom_prompt_placeholder: 議事録生成用のカスタムプロンプトを入力してください...
frequency: 生成頻度
frequency_10min: 10分ごと
frequency_1min: 1分ごと
frequency_3min: 3分ごと
frequency_5min: 5分ごと
generate: 生成
generate_minutes: 議事録を生成
generate_minutes_header: 議事録を生成
generated_minutes: 生成された議事録
generating: 議事録生成中...
generation_error: 議事録の生成に失敗しました。再試行してください。
generation_frequency: 生成頻度
generation_success: 議事録が正常に生成されました
language: 言語
language: 文字起こし言語
language_auto: 自動検出
language_chinese: 中国語
language_english: 英語
Expand All @@ -540,14 +548,21 @@ meetingMinutes:
language_vietnamese: ベトナム語
last_generated: 最後の生成時刻 {{time}}
minutes_placeholder: 生成後にここに議事録が表示されます
model: モデル
model: 議事録生成モデル
new_recording_session: 新しい録音セッション
next_generation: 次回生成
next_generation_in: '次回生成まで : '
no_transcript: 文字起こしがありません
partial_indicator: (...)
record_transcribe: 音声認識
screen_audio_error: スクリーン音声エラー
speech_recognition: 音声認識
style: 議事録スタイル
style_custom: カスタム
style_detail: 詳細
style_faq: 質疑応答
style_newspaper: 新聞
style_summary: 要約
style_transcription: 文字起こし
title: 議事録生成
transcript: 文字起こし
Expand Down Expand Up @@ -682,7 +697,7 @@ transcribe:
mic_input: マイク入力
result_placeholder: 音声認識結果がここに表示されます
screen_audio: スクリーン音声
screen_audio_error: 'スクリーン音声エラー:'
screen_audio_error: スクリーン音声エラー
screen_audio_notice: 'Windows の場合:「画面全体」タブより、「システム音声も共有する」を ON にしてください。<br/>Mac の場合:「Chrome Tab」から、「Also share tab audio」を ON にしてください。<br/>Chrome と Edge は動作します。Firefox は動作しません。'
select_input_method: マイク入力 or ファイルアップロードから選択してください
speaker_names: 話し手の名前(カンマ区切り)
Expand All @@ -696,11 +711,21 @@ translate:
additional_context_placeholder: 追加で考慮してほしい点を入力することができます(カジュアルさ等)
auto_detect_language: 言語を自動検出
auto_translate: 自動翻訳
contextHelp: コンテキスト情報は会議の背景情報を提供することで翻訳精度を向上させます。
continue_output: 続きを出力
enter_text: 入力してください
model: リアルタイム翻訳モデル
realtimeTranslation: リアルタイム翻訳
result_placeholder: 翻訳結果がここに表示されます
systemGeneratedContext: システム自動コンテキスト
systemGeneratedContextPlaceholder: 会議内容に基づいて自動生成されたコンテキスト
target_language: リアルタイム翻訳言語
text_to_translate: 翻訳したい文章
title: 翻訳
translating: 翻訳中...
translation: 翻訳
userDefinedContext: ユーザー定義コンテキスト
userDefinedContextPlaceholder: 翻訳精度向上のためのコンテキストを入力(会議の話題、専門用語など)
useCaseBuilder:
accessError: アクセスエラー
addInputExample: 入力例を追加
Expand Down
30 changes: 27 additions & 3 deletions packages/web/public/locales/translation/th.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -37,13 +37,16 @@ common:
cancel: ยกเลิก
clear: ล้าง
close: ปิด
collapse: ย่อ
colon: ':'
complete: เสร็จสิ้น
create: สร้าง
delete: ลบ
enter_text: ป้อนข้อความ
error: เกิดข้อผิดพลาด
errorNoSuggestions: ไม่พบคำแนะนำ
execute: ดำเนินการ
expand: ขยาย
export: ส่งออก
feedback_received: ได้รับข้อเสนอแนะแล้ว ขอบคุณ
here: ที่นี่
Expand All @@ -56,6 +59,7 @@ common:
not_available: ไม่พร้อมใช้งาน
not_selected: ไม่ได้เลือก
optional: ไม่บังคับ
other: อื่นๆ
previous: ก่อนหน้า
required: จำเป็น
reviewComplete: การตรวจสอบเสร็จสิ้น
Expand Down Expand Up @@ -557,19 +561,22 @@ language:
zh: ภาษาจีน
meetingMinutes:
auto_generate: สร้างอัตโนมัติ
clear_minutes: ล้างรายงานการประชุม
custom_prompt: พรอมต์แบบกำหนดเอง
custom_prompt_placeholder: ป้อนพรอมต์แบบกำหนดเองสำหรับการสร้างรายงานการประชุม...
frequency: ความถี่ในการสร้าง
frequency_10min: ทุก 10 นาที
frequency_1min: ทุกนาที
frequency_3min: ทุก 3 นาที
frequency_5min: ทุก 5 นาที
generate: สร้าง
generate_minutes_header: สร้างรายงานการประชุม
generated_minutes: รายงานการประชุมที่สร้างแล้ว
generating: กำลังสร้างรายงานการประชุม...
generation_error: ไม่สามารถสร้างรายงานการประชุมได้ กรุณาลองอีกครั้ง
generation_frequency: ความถี่ในการสร้าง
generation_success: สร้างรายงานการประชุมสำเร็จ
language: ภาษา
language: ภาษาการถอดเสียง
language_auto: ตรวจจับอัตโนมัติ
language_chinese: จีน
language_english: อังกฤษ
Expand All @@ -579,14 +586,21 @@ meetingMinutes:
language_vietnamese: เวียดนาม
last_generated: สร้างล่าสุดเมื่อ {{time}}
minutes_placeholder: รายงานการประชุมจะปรากฏที่นี่หลังจากสร้าง
model: โมเดล
model: โมเดลสร้างรายงานการประชุม
new_recording_session: เซสชันการบันทึกใหม่
next_generation: การสร้างครั้งถัดไป
next_generation_in: 'สร้างครั้งถัดไปใน : '
no_transcript: ไม่มีบันทึกการถอดความ
partial_indicator: (...)
record_transcribe: บันทึกและถอดความ
screen_audio_error: ข้อผิดพลาดเสียงหน้าจอ
speech_recognition: การรู้จำเสียงพูด
style: รูปแบบรายงานการประชุม
style_custom: กำหนดเอง
style_detail: รายละเอียด
style_faq: คำถามที่พบบ่อย
style_newspaper: หนังสือพิมพ์
style_summary: สรุป
style_transcription: การถอดความ
title: ตัวสร้างรายงานการประชุม
transcript: บันทึกการถอดความ
Expand Down Expand Up @@ -718,7 +732,7 @@ transcribe:
mic_input: อินพุตไมโครโฟน
result_placeholder: ข้อความที่แปลงจากเสียงของคุณ
screen_audio: เสียงหน้าจอ
screen_audio_error: 'ข้อผิดพลาดเสียงหน้าจอ:'
screen_audio_error: ข้อผิดพลาดเสียงหน้าจอ
screen_audio_notice: 'สำหรับ Windows: เลือกแท็บ "หน้าจอทั้งหมด" และเปิด "แชร์เสียงระบบด้วย"<br/>สำหรับ Mac: เลือก "Chrome Tab" และเปิด "Also share tab audio"<br/>Chrome และ Edge ใช้งานได้ Firefox ใช้งานไม่ได้'
select_input_method: โปรดเลือกจากอินพุตไมโครโฟนหรืออัปโหลดไฟล์
speaker_names: ชื่อผู้พูด (คั่นด้วยเครื่องหมายจุลภาค)
Expand All @@ -732,11 +746,21 @@ translate:
additional_context_placeholder: คุณสามารถป้อนประเด็นเพิ่มเติมที่ต้องการพิจารณา (เช่น ความไม่เป็นทางการ ฯลฯ)
auto_detect_language: ตรวจจับภาษาอัตโนมัติ
auto_translate: แปลอัตโนมัติ
contextHelp: ข้อมูลบริบทช่วยเพิ่มความแม่นยำในการแปลโดยให้ข้อมูลพื้นฐานเกี่ยวกับการประชุม
continue_output: ดำเนินการต่อ
enter_text: ป้อนข้อความ
model: โมเดลการแปลแบบเรียลไทม์
realtimeTranslation: การแปลแบบเรียลไทม์
result_placeholder: ผลการแปลจะแสดงที่นี่
systemGeneratedContext: บริบทที่สร้างโดยระบบ
systemGeneratedContextPlaceholder: บริบทที่สร้างขึ้นอัตโนมัติจากเนื้อหาการประชุม
target_language: ภาษาการแปลแบบเรียลไทม์
text_to_translate: ข้อความที่จะแปล
title: แปล
translating: กำลังแปล...
translation: การแปล
userDefinedContext: บริบทที่ผู้ใช้กำหนด
userDefinedContextPlaceholder: ป้อนบริบทเพื่อเพิ่มความแม่นยำในการแปล (เช่น หัวข้อการประชุม คำศัพท์เทคนิค ฯลฯ)
useCaseBuilder:
accessError: ข้อผิดพลาดในการเข้าถึง
addInputExample: เพิ่มตัวอย่างอินพุต
Expand Down
Loading
Loading