From 7aa5caeff514f03ba4284903d2cf7ebcc2aad642 Mon Sep 17 00:00:00 2001 From: Yoshida Hiroshi Date: Mon, 16 Dec 2024 16:06:01 +0900 Subject: [PATCH 1/5] =?UTF-8?q?=E7=B5=90=E6=9E=9C=E3=81=AE=E8=A9=95?= =?UTF-8?q?=E4=BE=A1=E3=81=AB=20Confidence,=20StartTime,=20EndTime=20?= =?UTF-8?q?=E3=82=92=E4=BD=BF=E7=94=A8=E3=81=A7=E3=81=8D=E3=82=8B=E3=82=88?= =?UTF-8?q?=E3=81=86=E3=81=AB=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- amazon_transcribe_handler.go | 46 ++++++++++++++++++++++++++++++++++-- config.go | 3 +++ 2 files changed, 47 insertions(+), 2 deletions(-) diff --git a/amazon_transcribe_handler.go b/amazon_transcribe_handler.go index 3080874..e56b94e 100644 --- a/amazon_transcribe_handler.go +++ b/amazon_transcribe_handler.go @@ -152,11 +152,53 @@ func (h *AmazonTranscribeHandler) Handle(ctx context.Context, opusCh chan opusCh if at.Config.AwsResultID { result.WithResultID(*res.ResultId) } + + minimumConfidenceScore := at.Config.MinimumConfidenceScore + minimumTranscribedTimeMs := at.Config.MinimumTranscribedTimeMs + for _, alt := range res.Alternatives { + items := alt.Items + var message string - if alt.Transcript != nil { - message = *alt.Transcript + if minimumConfidenceScore > 0 { + if *res.IsPartial { + // IsPartial: true の場合は Transcript をそのまま使用する + if alt.Transcript != nil { + message = *alt.Transcript + } + } else { + for _, item := range items { + if item.Confidence != nil { + if *item.Confidence < minimumConfidenceScore { + // 信頼スコアが低い場合は次へ + continue + } + } + + if (item.StartTime != nil) && (item.EndTime != nil) { + if (*item.EndTime - *item.StartTime) > 0 { + if (*item.EndTime - *item.StartTime) < minimumTranscribedTimeMs { + // 発話時間が短い場合は次へ + continue + } + } + } + + message += *item.Content + } + } + } else { + // minimumConfidenceScore が設定されていない(0)場合は Transcript をそのまま使用する + if alt.Transcript != nil { + message = *alt.Transcript + } } + + // メッセージが空の場合は次へ + if message == "" { + continue + } + result.SetMessage(message) if err := encoder.Encode(result); err != nil { w.CloseWithError(err) diff --git a/config.go b/config.go index 804475b..56a110e 100644 --- a/config.go +++ b/config.go @@ -79,6 +79,9 @@ type Config struct { // aws の場合は IsPartial が false, gcp の場合は IsFinal が true の場合にのみ結果を返す指定 FinalResultOnly bool `ini:"final_result_only"` + MinimumConfidenceScore float64 `ini:"minimum_confidence_score"` + MinimumTranscribedTimeMs float64 `ini:"minimum_transcribed_time_ms"` + // Amazon Web Services AwsCredentialFile string `ini:"aws_credential_file"` AwsProfile string `ini:"aws_profile"` From 7409fb45fc536cff680feade68dbca8e9b7f3a82 Mon Sep 17 00:00:00 2001 From: Yoshida Hiroshi Date: Tue, 17 Dec 2024 11:52:17 +0900 Subject: [PATCH 2/5] =?UTF-8?q?=E3=83=A1=E3=83=83=E3=82=BB=E3=83=BC?= =?UTF-8?q?=E3=82=B8=E6=A7=8B=E7=AF=89=E3=82=92=E9=96=A2=E6=95=B0=E5=8C=96?= =?UTF-8?q?=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- amazon_transcribe_handler.go | 94 ++++++++++++++++++++---------------- 1 file changed, 52 insertions(+), 42 deletions(-) diff --git a/amazon_transcribe_handler.go b/amazon_transcribe_handler.go index e56b94e..8aa9222 100644 --- a/amazon_transcribe_handler.go +++ b/amazon_transcribe_handler.go @@ -153,49 +153,9 @@ func (h *AmazonTranscribeHandler) Handle(ctx context.Context, opusCh chan opusCh result.WithResultID(*res.ResultId) } - minimumConfidenceScore := at.Config.MinimumConfidenceScore - minimumTranscribedTimeMs := at.Config.MinimumTranscribedTimeMs - for _, alt := range res.Alternatives { - items := alt.Items - - var message string - if minimumConfidenceScore > 0 { - if *res.IsPartial { - // IsPartial: true の場合は Transcript をそのまま使用する - if alt.Transcript != nil { - message = *alt.Transcript - } - } else { - for _, item := range items { - if item.Confidence != nil { - if *item.Confidence < minimumConfidenceScore { - // 信頼スコアが低い場合は次へ - continue - } - } - - if (item.StartTime != nil) && (item.EndTime != nil) { - if (*item.EndTime - *item.StartTime) > 0 { - if (*item.EndTime - *item.StartTime) < minimumTranscribedTimeMs { - // 発話時間が短い場合は次へ - continue - } - } - } - - message += *item.Content - } - } - } else { - // minimumConfidenceScore が設定されていない(0)場合は Transcript をそのまま使用する - if alt.Transcript != nil { - message = *alt.Transcript - } - } - - // メッセージが空の場合は次へ - if message == "" { + message, ok := buildMessage(at.Config, *alt, *res.IsPartial) + if !ok { continue } @@ -237,3 +197,53 @@ 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 + minimumTranscribedTimeMs := config.MinimumTranscribedTimeMs + + var message string + if minimumConfidenceScore > 0 { + if isPartial { + // IsPartial: true の場合は Transcript をそのまま使用する + if alt.Transcript != nil { + message = *alt.Transcript + } + } else { + items := alt.Items + + for _, item := range items { + if item.Confidence != nil { + if *item.Confidence < minimumConfidenceScore { + // 信頼スコアが低い場合は次へ + continue + } + } + + if (item.StartTime != nil) && (item.EndTime != nil) { + if (*item.EndTime - *item.StartTime) > 0 { + if (*item.EndTime - *item.StartTime) < minimumTranscribedTimeMs { + // 発話時間が短い場合は次へ + continue + } + } + } + + message += *item.Content + } + } + } else { + // minimumConfidenceScore が設定されていない(0)場合は Transcript をそのまま使用する + if alt.Transcript != nil { + message = *alt.Transcript + } + } + + // メッセージが空の場合は次へ + if message == "" { + return message, false + } + + return message, true + +} From dfd659e7b9ce807034e73029b603b61504be36fa Mon Sep 17 00:00:00 2001 From: Yoshida Hiroshi Date: Tue, 17 Dec 2024 12:08:34 +0900 Subject: [PATCH 3/5] =?UTF-8?q?-=20=E8=A8=AD=E5=AE=9A=E3=81=AB=20minimum?= =?UTF-8?q?=5Fconfidence=5Fscore,=20minimum=5Ftranscribed=5Ftime=20?= =?UTF-8?q?=E3=82=92=E8=BF=BD=E5=8A=A0=E3=81=99=E3=82=8B=20-=20MinimumTran?= =?UTF-8?q?scribedTime=20=E3=81=AE=E6=8C=87=E5=AE=9A=E3=82=92=E7=A7=92?= =?UTF-8?q?=E3=81=AB=E5=A4=89=E6=9B=B4=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGES.md | 7 +++++++ amazon_transcribe_handler.go | 4 ++-- config.go | 4 ++-- config_example.ini | 6 ++++++ 4 files changed, 17 insertions(+), 4 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index e4b073c..0401c9b 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -11,6 +11,13 @@ ## develop +- [ADD] 採用する結果の信頼スコアの最小値を指定する minimum_confidence_score を追加する + - デフォルト値: 0(信頼スコアを無視する) + - @Hexa +- [ADD] 採用する結果の最小発話期間(秒)を指定する minimum_transcribed_time を追加する + - デフォルト値: 0(最小発話期間を無視する) + - @Hexa + ### misc ## 2024.7.0 diff --git a/amazon_transcribe_handler.go b/amazon_transcribe_handler.go index 8aa9222..06b04c8 100644 --- a/amazon_transcribe_handler.go +++ b/amazon_transcribe_handler.go @@ -200,7 +200,7 @@ func (h *AmazonTranscribeHandler) Handle(ctx context.Context, opusCh chan opusCh func buildMessage(config Config, alt transcribestreamingservice.Alternative, isPartial bool) (string, bool) { minimumConfidenceScore := config.MinimumConfidenceScore - minimumTranscribedTimeMs := config.MinimumTranscribedTimeMs + minimumTranscribedTime := config.MinimumTranscribedTime var message string if minimumConfidenceScore > 0 { @@ -222,7 +222,7 @@ func buildMessage(config Config, alt transcribestreamingservice.Alternative, isP if (item.StartTime != nil) && (item.EndTime != nil) { if (*item.EndTime - *item.StartTime) > 0 { - if (*item.EndTime - *item.StartTime) < minimumTranscribedTimeMs { + if (*item.EndTime - *item.StartTime) < minimumTranscribedTime { // 発話時間が短い場合は次へ continue } diff --git a/config.go b/config.go index 56a110e..aeba0ad 100644 --- a/config.go +++ b/config.go @@ -79,8 +79,8 @@ type Config struct { // aws の場合は IsPartial が false, gcp の場合は IsFinal が true の場合にのみ結果を返す指定 FinalResultOnly bool `ini:"final_result_only"` - MinimumConfidenceScore float64 `ini:"minimum_confidence_score"` - MinimumTranscribedTimeMs float64 `ini:"minimum_transcribed_time_ms"` + MinimumConfidenceScore float64 `ini:"minimum_confidence_score"` + MinimumTranscribedTime float64 `ini:"minimum_transcribed_time"` // Amazon Web Services AwsCredentialFile string `ini:"aws_credential_file"` diff --git a/config_example.ini b/config_example.ini index 19b71db..fb910d3 100644 --- a/config_example.ini +++ b/config_example.ini @@ -55,6 +55,12 @@ retry_interval_ms = 100 # aws の場合は IsPartial が false, gcp の場合は IsFinal が true の場合の最終的な結果のみを返す指定 final_result_only = true +# 採用する結果の信頼スコアの最小値です +# minimum_confidence_score = 0.0 + +# 採用する結果の最小発話期間(秒)です +# minimum_transcribed_time = 0.0 + # [aws] aws_region = ap-northeast-1 # Partial-result stabilization の有効化です From 0cb48f31a60353187d8266ef266911eeb091c6b3 Mon Sep 17 00:00:00 2001 From: Yoshida Hiroshi Date: Tue, 17 Dec 2024 13:17:53 +0900 Subject: [PATCH 4/5] =?UTF-8?q?aws=20=E6=8C=87=E5=AE=9A=E6=99=82=E3=81=AE?= =?UTF-8?q?=E3=81=BF=E6=9C=89=E5=8A=B9=E3=81=AA=E6=97=A8=E3=82=92=E8=BF=BD?= =?UTF-8?q?=E8=A8=98=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGES.md | 4 ++-- config_example.ini | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 0401c9b..1548360 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -11,10 +11,10 @@ ## develop -- [ADD] 採用する結果の信頼スコアの最小値を指定する minimum_confidence_score を追加する +- [ADD] 採用する結果の信頼スコアの最小値を指定する minimum_confidence_score を追加する(aws のみ有効) - デフォルト値: 0(信頼スコアを無視する) - @Hexa -- [ADD] 採用する結果の最小発話期間(秒)を指定する minimum_transcribed_time を追加する +- [ADD] 採用する結果の最小発話期間(秒)を指定する minimum_transcribed_time を追加する(aws のみ有効) - デフォルト値: 0(最小発話期間を無視する) - @Hexa diff --git a/config_example.ini b/config_example.ini index fb910d3..e5ce1cd 100644 --- a/config_example.ini +++ b/config_example.ini @@ -55,10 +55,10 @@ retry_interval_ms = 100 # aws の場合は IsPartial が false, gcp の場合は IsFinal が true の場合の最終的な結果のみを返す指定 final_result_only = true -# 採用する結果の信頼スコアの最小値です +# 採用する結果の信頼スコアの最小値です(aws 指定時のみ有効) # minimum_confidence_score = 0.0 -# 採用する結果の最小発話期間(秒)です +# 採用する結果の最小発話期間(秒)です(aws 指定時のみ有効) # minimum_transcribed_time = 0.0 # [aws] From 32954d213e78a4d9b69bff2eb0fd64c39d08e894 Mon Sep 17 00:00:00 2001 From: Yoshida Hiroshi Date: Tue, 17 Dec 2024 15:52:40 +0900 Subject: [PATCH 5/5] =?UTF-8?q?=E5=A4=89=E6=9B=B4=E5=B1=A5=E6=AD=B4?= =?UTF-8?q?=E3=82=92=E6=9B=B4=E6=96=B0=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGES.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 1548360..76fabbc 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -11,10 +11,12 @@ ## develop -- [ADD] 採用する結果の信頼スコアの最小値を指定する minimum_confidence_score を追加する(aws のみ有効) +- [ADD] 採用する結果の信頼スコアの最小値を指定する minimum_confidence_score を追加する + - Amazon Transcribe のみ有効 - デフォルト値: 0(信頼スコアを無視する) - @Hexa -- [ADD] 採用する結果の最小発話期間(秒)を指定する minimum_transcribed_time を追加する(aws のみ有効) +- [ADD] 採用する結果の最小発話期間(秒)を指定する minimum_transcribed_time を追加する + - Amazon Transcribe のみ有効 - デフォルト値: 0(最小発話期間を無視する) - @Hexa