From 0748eb856caa9525325754a46a8a7f76aca38e5e Mon Sep 17 00:00:00 2001 From: Yoshida Hiroshi Date: Fri, 20 Dec 2024 14:48:28 +0900 Subject: [PATCH] =?UTF-8?q?=E3=83=95=E3=82=A3=E3=83=AB=E3=82=BF=E3=83=AA?= =?UTF-8?q?=E3=83=B3=E3=82=B0=E3=81=AE=E6=9D=A1=E4=BB=B6=E3=82=92=E9=96=A2?= =?UTF-8?q?=E6=95=B0=E3=81=AB=E3=81=BE=E3=81=A8=E3=82=81=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- amazon_transcribe_handler.go | 70 ++++++++++++++++++++++++------------ 1 file changed, 47 insertions(+), 23 deletions(-) diff --git a/amazon_transcribe_handler.go b/amazon_transcribe_handler.go index 03e5bf7..d34ac7c 100644 --- a/amazon_transcribe_handler.go +++ b/amazon_transcribe_handler.go @@ -198,37 +198,61 @@ func (h *AmazonTranscribeHandler) Handle(ctx context.Context, opusCh chan opusCh return r, nil } -func buildMessage(config Config, alt transcribestreamingservice.Alternative, isPartial bool) (string, bool) { - minimumConfidenceScore := config.MinimumConfidenceScore +func contentFilterByTranscribedTime(config Config, item transcribestreamingservice.Item) bool { minimumTranscribedTime := config.MinimumTranscribedTime + // minimumTranscribedTime が設定されていない場合はフィルタリングしない + if minimumTranscribedTime <= 0 { + return true + } + + // StartTime または EndTime が nil の場合はフィルタリングしない + if (item.StartTime == nil) || (item.EndTime == nil) { + return true + } + + // 発話時間が 0 の場合はフィルタリングしない(句読点を想定) + if *item.EndTime == *item.StartTime { + return true + } + + // 発話時間が minimumTranscribedTime 未満の場合はフィルタリングする + return (*item.EndTime - *item.StartTime) >= minimumTranscribedTime +} + +func contentFilterByConfidenceScore(config Config, item transcribestreamingservice.Item, isPartial bool) bool { + minimumConfidenceScore := config.MinimumConfidenceScore + + // minimumConfidenceScore が設定されていない場合はフィルタリングしない + if minimumConfidenceScore <= 0 { + return true + } + + // isPartial が true の場合はフィルタリングしない + if isPartial { + return true + } + + // Confidence が nil の場合はフィルタリングしない + if item.Confidence == nil { + return true + } + + // 信頼スコアが minimumConfidenceScore 未満の場合はフィルタリングする + return *item.Confidence >= minimumConfidenceScore +} + +func buildMessage(config Config, alt transcribestreamingservice.Alternative, isPartial bool) (string, bool) { var message string items := alt.Items for _, item := range items { - // minimumTranscribedTime が設定されている場合のみ時間を評価する - if minimumTranscribedTime > 0 { - if (item.StartTime != nil) && (item.EndTime != nil) { - if (*item.EndTime - *item.StartTime) > 0 { - if (*item.EndTime - *item.StartTime) < minimumTranscribedTime { - // 発話時間が短い場合は次へ - continue - } - } - } + if !contentFilterByTranscribedTime(config, *item) { + continue } - // minimumConfidenceScore が設定されている場合のみ信頼スコアを評価する - if minimumConfidenceScore > 0 { - // isPartial が false の場合のみ信頼スコアを評価する - if !isPartial { - if item.Confidence != nil { - if *item.Confidence < minimumConfidenceScore { - // 信頼スコアが低い場合は次へ - continue - } - } - } + if !contentFilterByConfidenceScore(config, *item, isPartial) { + continue } message += *item.Content