Skip to content

Commit

Permalink
Merge pull request #194 from shiguredo/feature/improve-filter
Browse files Browse the repository at this point in the history
フィルターの改善
  • Loading branch information
Hexa authored Dec 24, 2024
2 parents e36c3aa + 30908ec commit 87f4ad8
Show file tree
Hide file tree
Showing 6 changed files with 808 additions and 413 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
9 changes: 9 additions & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,19 @@

## develop

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

### misc

- [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.8.0

Expand Down
101 changes: 65 additions & 36 deletions amazon_transcribe_handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -198,52 +198,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
}

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

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 87f4ad8

Please sign in to comment.