Skip to content

Commit cbc88b9

Browse files
Sugi275sugusugiaws
andauthored
議事録生成についていくつかの機能追加 (システム音声、言語の指定、直接入力、見栄えの変更) (#1176)
Co-authored-by: sugusugi <[email protected]>
1 parent a9638d4 commit cbc88b9

File tree

11 files changed

+1077
-172
lines changed

11 files changed

+1077
-172
lines changed

packages/cdk/lambda/startTranscription.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { APIGatewayProxyEvent, APIGatewayProxyResult } from 'aws-lambda';
33
import {
44
TranscribeClient,
55
StartTranscriptionJobCommand,
6+
LanguageCode,
67
} from '@aws-sdk/client-transcribe';
78
import { StartTranscriptionRequest } from 'generative-ai-use-cases';
89

@@ -14,13 +15,14 @@ export const handler = async (
1415
const req: StartTranscriptionRequest = JSON.parse(event.body!);
1516
const userId = event.requestContext.authorizer!.claims.sub;
1617

17-
const { audioUrl, speakerLabel, maxSpeakers } = req;
18+
const { audioUrl, speakerLabel, maxSpeakers, languageCode } = req;
1819

1920
const uuid = uuidv4();
2021

2122
const command = new StartTranscriptionJobCommand({
22-
IdentifyLanguage: true,
23-
LanguageOptions: ['ja-JP', 'en-US'],
23+
IdentifyLanguage: !languageCode, // Enable auto-detection when no language specified
24+
LanguageCode: languageCode ? (languageCode as LanguageCode) : undefined, // Use specified language when provided
25+
LanguageOptions: !languageCode ? ['ja-JP', 'en-US'] : undefined, // Language candidates for auto-detection only
2426
Media: { MediaFileUri: audioUrl },
2527
TranscriptionJobName: uuid,
2628
Settings: {

packages/types/src/protocol.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,7 @@ export type StartTranscriptionRequest = {
169169
audioUrl: string;
170170
speakerLabel: boolean;
171171
maxSpeakers: number;
172+
languageCode?: string;
172173
};
173174

174175
export type StartTranscriptionResponse = {

packages/web/public/locales/translation/en.yaml

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -662,11 +662,19 @@ meetingMinutes:
662662
frequency_1min: Every 1 minute
663663
frequency_5min: Every 5 minutes
664664
generate: Generate
665-
generate_minutes_header: Generate Minutes
665+
generate_minutes_header: Generate Meeting Minutes
666666
generated_minutes: Generated Minutes
667667
generating: Generating minutes...
668668
generation_error: Failed to generate meeting minutes. Please try again.
669669
generation_success: Meeting minutes generated successfully
670+
language: Language
671+
language_auto: Auto Detect
672+
language_chinese: Chinese
673+
language_english: English
674+
language_japanese: Japanese
675+
language_korean: Korean
676+
language_thai: Thai
677+
language_vietnamese: Vietnamese
670678
last_generated: Last generated {{time}}
671679
minutes_placeholder: Minutes will appear here after generation
672680
model: Model
@@ -824,11 +832,17 @@ summarize:
824832
title: Summarize
825833
transcribe:
826834
detailed_parameters: Detailed parameters
835+
direct_input: Direct Input
836+
direct_input_instruction: Please enter the source text for meeting minutes directly in the "Transcript" area below.
837+
direct_input_placeholder: Please enter the source text for meeting minutes here...
827838
file_upload: File Upload
828839
max_speakers: Max Speakers
829840
max_speakers_help: Maximum number of speakers to recognize
830841
mic_input: Microphone Input
831842
result_placeholder: Speech recognition results will be displayed here
843+
screen_audio: Screen Audio
844+
screen_audio_error: 'Screen Audio Error:'
845+
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.'
832846
select_input_method: Please select from microphone input or file upload
833847
speaker_names: Speaker names (comma separated)
834848
speaker_recognition: Speaker recognition

packages/web/public/locales/translation/ja.yaml

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -523,11 +523,19 @@ meetingMinutes:
523523
frequency_1min: 1分ごと
524524
frequency_5min: 5分ごと
525525
generate: 生成
526-
generate_minutes_header: 議事録生成
526+
generate_minutes_header: 議事録を生成
527527
generated_minutes: 生成された議事録
528528
generating: 議事録生成中...
529529
generation_error: 議事録の生成に失敗しました。再試行してください。
530530
generation_success: 議事録が正常に生成されました
531+
language: 言語
532+
language_auto: 自動検出
533+
language_chinese: 中国語
534+
language_english: 英語
535+
language_japanese: 日本語
536+
language_korean: 韓国語
537+
language_thai: タイ語
538+
language_vietnamese: ベトナム語
531539
last_generated: 最後の生成時刻 {{time}}
532540
minutes_placeholder: 生成後にここに議事録が表示されます
533541
model: モデル
@@ -662,11 +670,17 @@ summarize:
662670
title: 要約
663671
transcribe:
664672
detailed_parameters: 詳細なパラメータ
673+
direct_input: 直接入力
674+
direct_input_instruction: 下の「文字起こし」エリアに議事録の元となるテキストを直接入力してください。
675+
direct_input_placeholder: ここに議事録の元となるテキストを入力してください...
665676
file_upload: ファイルアップロード
666677
max_speakers: Max Speakers
667678
max_speakers_help: 認識する話者の最大数
668679
mic_input: マイク入力
669680
result_placeholder: 音声認識結果がここに表示されます
681+
screen_audio: スクリーン音声
682+
screen_audio_error: 'スクリーン音声エラー:'
683+
screen_audio_notice: 'Windows の場合:「画面全体」タブより、「システム音声も共有する」を ON にしてください。<br/>Mac の場合:「Chrome Tab」から、「Also share tab audio」を ON にしてください。<br/>Chrome と Edge は動作します。Firefox は動作しません。'
670684
select_input_method: マイク入力 or ファイルアップロードから選択してください
671685
speaker_names: 話し手の名前(カンマ区切り)
672686
speaker_recognition: 話者認識

packages/web/public/locales/translation/th.yaml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -567,6 +567,14 @@ meetingMinutes:
567567
generating: กำลังสร้างรายงานการประชุม...
568568
generation_error: ไม่สามารถสร้างรายงานการประชุมได้ กรุณาลองอีกครั้ง
569569
generation_success: สร้างรายงานการประชุมสำเร็จ
570+
language: ภาษา
571+
language_auto: ตรวจจับอัตโนมัติ
572+
language_chinese: จีน
573+
language_english: อังกฤษ
574+
language_japanese: ญี่ปุ่น
575+
language_korean: เกาหลี
576+
language_thai: ไทย
577+
language_vietnamese: เวียดนาม
570578
last_generated: สร้างล่าสุดเมื่อ {{time}}
571579
minutes_placeholder: รายงานการประชุมจะปรากฏที่นี่หลังจากสร้าง
572580
model: โมเดล
@@ -692,11 +700,17 @@ summarize:
692700
title: สรุป
693701
transcribe:
694702
detailed_parameters: ตั้งค่าขั้นสูงแบบกำหนดเอง
703+
direct_input: ป้อนข้อมูลโดยตรง
704+
direct_input_instruction: โปรดป้อนข้อความต้นฉบับสำหรับรายงานการประชุมโดยตรงในพื้นที่ "บันทึกการถอดความ" ด้านล่าง
705+
direct_input_placeholder: โปรดป้อนข้อความต้นฉบับสำหรับรายงานการประชุมที่นี่...
695706
file_upload: อัปโหลดไฟล์
696707
max_speakers: จำนวนผู้พูดสูงสุด
697708
max_speakers_help: จำนวนผู้พูดสูงสุดในบทสนทนาที่ต้องการแยกแยะ
698709
mic_input: อินพุตไมโครโฟน
699710
result_placeholder: ข้อความที่แปลงจากเสียงของคุณ
711+
screen_audio: เสียงหน้าจอ
712+
screen_audio_error: 'ข้อผิดพลาดเสียงหน้าจอ:'
713+
screen_audio_notice: 'สำหรับ Windows: เลือกแท็บ "หน้าจอทั้งหมด" และเปิด "แชร์เสียงระบบด้วย"<br/>สำหรับ Mac: เลือก "Chrome Tab" และเปิด "Also share tab audio"<br/>Chrome และ Edge ใช้งานได้ Firefox ใช้งานไม่ได้'
700714
select_input_method: โปรดเลือกจากอินพุตไมโครโฟนหรืออัปโหลดไฟล์
701715
speaker_names: ชื่อผู้พูด (คั่นด้วยเครื่องหมายจุลภาค)
702716
speaker_recognition: การแยกแยะผู้พูด

packages/web/public/locales/translation/vi.yaml

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -537,6 +537,41 @@ language:
537537
ko: Tiếng Hàn
538538
th: tiếng Thái
539539
zh: Tiếng Trung
540+
meetingMinutes:
541+
auto_generate: Tự động tạo
542+
custom_prompt: Lời nhắc tùy chỉnh
543+
custom_prompt_placeholder: Nhập lời nhắc tùy chỉnh để tạo biên bản cuộc họp...
544+
frequency: Tần suất tạo
545+
frequency_10min: Mỗi 10 phút
546+
frequency_1min: Mỗi phút
547+
frequency_5min: Mỗi 5 phút
548+
generate: Tạo
549+
generate_minutes_header: Tạo biên bản
550+
generated_minutes: Biên bản đã được tạo
551+
generating: Đang tạo biên bản...
552+
generation_error: Không thể tạo biên bản cuộc họp. Vui lòng thử lại.
553+
generation_success: Tạo biên bản cuộc họp thành công
554+
language: Ngôn ngữ
555+
language_auto: Tự động phát hiện
556+
language_chinese: Tiếng Trung
557+
language_english: Tiếng Anh
558+
language_japanese: Tiếng Nhật
559+
language_korean: Tiếng Hàn
560+
language_thai: Tiếng Thái
561+
language_vietnamese: Tiếng Việt
562+
last_generated: Tạo lần cuối {{time}}
563+
minutes_placeholder: Biên bản sẽ xuất hiện ở đây sau khi tạo
564+
model: Mô hình
565+
next_generation_in: 'Tạo tiếp theo trong : '
566+
record_transcribe: Ghi âm và chuyển đổi
567+
speech_recognition: Nhận dạng giọng nói
568+
style: Kiểu biên bản
569+
style_custom: Tùy chỉnh
570+
style_faq: FAQ
571+
style_newspaper: Báo chí
572+
style_transcription: Chuyển đổi
573+
title: Trình tạo biên bản cuộc họp
574+
transcript: Bản chuyển đổi
540575
model:
541576
parameters:
542577
reasoning: Reasoning
@@ -649,11 +684,17 @@ summarize:
649684
title: Tóm tắt
650685
transcribe:
651686
detailed_parameters: Tham số chi tiết
687+
direct_input: Nhập trực tiếp
688+
direct_input_instruction: Vui lòng nhập trực tiếp nội dung nguồn cho biên bản cuộc họp vào vùng "Bản chuyển đổi" bên dưới
689+
direct_input_placeholder: Vui lòng nhập nội dung nguồn cho biên bản cuộc họp tại đây...
652690
file_upload: Tải lên tệp
653691
max_speakers: Max Speakers
654692
max_speakers_help: Số lượng người nói tối đa được nhận dạng
655693
mic_input: Đầu vào microphone
656694
result_placeholder: Kết quả nhận dạng giọng nói sẽ được hiển thị ở đây
695+
screen_audio: Âm thanh màn hình
696+
screen_audio_error: 'Lỗi âm thanh màn hình:'
697+
screen_audio_notice: 'Đối với Windows: Chọn tab "Toàn bộ màn hình" và bật "Chia sẻ âm thanh hệ thống".<br/>Đối với Mac: Chọn "Chrome Tab" và bật "Also share tab audio".<br/>Chrome và Edge hoạt động. Firefox không hoạt động.'
657698
select_input_method: Vui lòng chọn từ đầu vào microphone hoặc tải lên tệp
658699
speaker_names: Tên người nói (phân cách bằng dấu phẩy)
659700
speaker_recognition: Nhận dạng người nói

packages/web/public/locales/translation/zh.yaml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -457,6 +457,14 @@ meetingMinutes:
457457
generating: 正在生成会议纪要...
458458
generation_error: 会议纪要生成失败。请重试。
459459
generation_success: 会议纪要生成成功
460+
language: 语言
461+
language_auto: 自动检测
462+
language_chinese: 中文
463+
language_english: 英语
464+
language_japanese: 日语
465+
language_korean: 韩语
466+
language_thai: 泰语
467+
language_vietnamese: 越南语
460468
last_generated: 最后生成时间 {{time}}
461469
minutes_placeholder: 生成后会议纪要将显示在这里
462470
model: 模型
@@ -566,11 +574,17 @@ summarize:
566574
title: 摘要
567575
transcribe:
568576
detailed_parameters: 详细参数
577+
direct_input: 直接输入
578+
direct_input_instruction: 请在下方"转录文本"区域中直接输入会议记录的源文本
579+
direct_input_placeholder: 请在此处输入会议记录的源文本...
569580
file_upload: 文件上传
570581
max_speakers: 最大发言人数
571582
max_speakers_help: 要识别的最大发言人数
572583
mic_input: 麦克风输入
573584
result_placeholder: 语音识别结果将显示在这里
585+
screen_audio: 屏幕音频
586+
screen_audio_error: 屏幕音频错误:
587+
screen_audio_notice: 'Windows 的情况:选择「整个屏幕」选项卡,并启用「共享系统音频」。<br/>Mac 的情况:选择「Chrome Tab」,并启用「Also share tab audio」。<br/>Chrome 和 Edge 可以使用。Firefox 无法使用。'
574588
select_input_method: 请选择麦克风输入或文件上传
575589
speaker_names: 发言人姓名(逗号分隔)
576590
speaker_recognition: 说话人识别

packages/web/src/hooks/useMicrophone.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@ const useMicrophone = () => {
3636
const [recording, setRecording] = useState(false);
3737
const [rawTranscripts, setRawTranscripts] = useState<
3838
{
39+
resultId: string;
40+
startTime: number;
41+
endTime: number;
3942
isPartial: boolean;
4043
transcripts: Transcript[];
4144
}[]
@@ -181,6 +184,10 @@ const useMicrophone = () => {
181184
const tmp = update(prev, {
182185
$push: [
183186
{
187+
resultId:
188+
result.ResultId ?? `mic-${Date.now()}-${Math.random()}`,
189+
startTime: result.StartTime ?? 0,
190+
endTime: result.EndTime ?? 0,
184191
isPartial: result.IsPartial ?? false,
185192
transcripts,
186193
},
@@ -195,6 +202,11 @@ const useMicrophone = () => {
195202
prev.length - 1,
196203
1,
197204
{
205+
resultId:
206+
result.ResultId ??
207+
`mic-${Date.now()}-${Math.random()}`,
208+
startTime: result.StartTime ?? 0,
209+
endTime: result.EndTime ?? 0,
198210
isPartial: result.IsPartial ?? false,
199211
transcripts,
200212
},
@@ -259,6 +271,7 @@ const useMicrophone = () => {
259271
recording,
260272
transcriptMic,
261273
clearTranscripts,
274+
rawTranscripts,
262275
};
263276
};
264277

0 commit comments

Comments
 (0)