Skip to content

Commit

Permalink
Merge branch 'release/2024.9.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
Hexa committed Dec 24, 2024
2 parents 032865f + 9bf527c commit b3bfe82
Show file tree
Hide file tree
Showing 7 changed files with 942 additions and 452 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,9 @@ jobs:
- name: Patch
run: make patch

- uses: dominikh/staticcheck-action@v1.3.1
- uses: dominikh/staticcheck-action@v1
with:
version: "2023.1.6"
version: "2024.1.1"
install-go: false

- name: Test
Expand Down
14 changes: 14 additions & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,20 @@

- [CHANGE] GitHub Actions の ubuntu-latest を ubuntu-24.04 に変更する
- @voluntas
- [UPDATE] go.mod の Go のバージョンを 1.23.4 にあげる
- @Hexa
- [UPDATE] GitHub Actions の staticcheck のバージョンを 2024.1.1 に上げる
- @Hexa

## 2024.9.0

- [CHANGE] Amazon Transcribe 向けの minimum_confidence_score と minimum_transcribed_time を独立させて、minimum_confidence_score が無効でも minimum_transcribed_time が有効な場合は minimum_transcribed_time でのフィルタリングが有効になるように変更する
- @Hexa
- [CHANGE] フィルタリングの結果が句読点のみになった場合はクライアントに結果を返さないように変更する
- @Hexa
- [CHANGE] サーバから切断された場合はリトライするように変更する
- Amazon Transcribe のみ対象
- @Hexa

## 2024.8.0

Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2024.8.0
2024.9.0
106 changes: 70 additions & 36 deletions amazon_transcribe_handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"encoding/json"
"errors"
"io"
"strings"
"sync"

"github.com/aws/aws-sdk-go/service/transcribestreamingservice"
Expand Down Expand Up @@ -187,6 +188,10 @@ func (h *AmazonTranscribeHandler) Handle(ctx context.Context, opusCh chan opusCh
*transcribestreamingservice.InternalFailureException:
err = errors.Join(err, ErrServerDisconnected)
default:
// サーバから切断された場合は再接続を試みる
if strings.Contains(err.Error(), "http2: server sent GOAWAY and closed the connection;") {
err = errors.Join(err, ErrServerDisconnected)
}
}

w.CloseWithError(err)
Expand All @@ -198,52 +203,81 @@ 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
}

// 句読点の場合はフィルタリングしない
if *item.Type == transcribestreamingservice.ItemTypePunctuation {
return true
}

// StartTime または EndTime が nil の場合はフィルタリングしない
if (item.StartTime == nil) || (item.EndTime == nil) {
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
}

// 句読点の場合はフィルタリングしない
if *item.Type == transcribestreamingservice.ItemTypePunctuation {
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
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
}
}
items := alt.Items

if (item.StartTime != nil) && (item.EndTime != nil) {
if (*item.EndTime - *item.StartTime) > 0 {
if (*item.EndTime - *item.StartTime) < minimumTranscribedTime {
// 発話時間が短い場合は次へ
continue
}
}
}
includePronunciation := false

message += *item.Content
}
for _, item := range items {
if !contentFilterByTranscribedTime(config, *item) {
continue
}
} else {
// minimumConfidenceScore が設定されていない(0)場合は Transcript をそのまま使用する
if alt.Transcript != nil {
message = *alt.Transcript

if !contentFilterByConfidenceScore(config, *item, isPartial) {
continue
}

if *item.Type == transcribestreamingservice.ItemTypePronunciation {
includePronunciation = true
}

message += *item.Content
}

// メッセージが空の場合は次へ
if message == "" {
return message, false
// 各評価の結果、句読点のみかメッセージが空の場合は次へ
if !includePronunciation || (message == "") {
return "", false
}

return message, true

}
Loading

0 comments on commit b3bfe82

Please sign in to comment.