From 0357939d4ab2a10ae3678e2285d012c713c26963 Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期四, 16 五月 2024 16:08:18 +0800
Subject: [PATCH] 解析结果匹配文字库并保存
---
service/process.go | 25 +++++++++++++++++++++++--
models/audio.go | 16 +++++++++++-----
models/text.go | 2 +-
3 files changed, 35 insertions(+), 8 deletions(-)
diff --git a/models/audio.go b/models/audio.go
index 842f8e9..8d1b51f 100644
--- a/models/audio.go
+++ b/models/audio.go
@@ -5,6 +5,7 @@
"gorm.io/gorm"
"speechAnalysis/constvar"
"speechAnalysis/pkg/mysqlx"
+ "strings"
"time"
)
@@ -14,7 +15,7 @@
gorm.Model
Name string `gorm:"index;type:varchar(255);not null;default:'';comment:闊抽鍚嶇О" json:"name"` // 闊抽鍚嶇О
Size int64 `gorm:"type:int;not null;default:0;comment:鏂囦欢澶у皬" json:"size"` // 闊抽澶у皬
- FilePath string `gorm:"type:varchar(255);not null;default:'';comment:闊抽鍚嶇О" json:"-"` //闊抽璺緞 // 闊抽璺緞
+ FilePath string `gorm:"type:varchar(255);not null;default:'';comment:闊抽璺緞" json:"-"` //闊抽璺緞 // 闊抽璺緞
AudioStatus constvar.AudioStatus `gorm:"type:tinyint;not null;default:0;comment:鐘舵��" json:"audioStatus"` // 闊抽鐘舵��
LocomotiveNumber string `gorm:"index;type:varchar(255);not null;default:'';comment:鏈鸿溅鍙�" json:"locomotiveNumber"` // 鏈鸿溅鍙�
TrainNumber string `gorm:"index;type:varchar(255);not null;default:'';comment:杞︽" json:"trainNumber"` // 杞︽
@@ -22,10 +23,11 @@
Station string `gorm:"index;type:varchar(255);not null;default:'';comment:杞︾珯鍙�" json:"station"` // 杞︾珯
OccurrenceAt time.Time `json:"-"`
OccurrenceTime string `json:"occurrenceTime" gorm:"-"`
- IsFollowed constvar.BoolType `gorm:"type:tinyint;not null;default:2;comment:鏄惁鍏虫敞"` //鏄惁鍏虫敞 1鍏虫敞 2鏈叧娉�
- Score float64 `json:"score"` // 缃俊搴�
- Words []string `json:"words" gorm:"-"` //鍖归厤鍒扮殑鏂囧瓧鏁扮粍
- AudioText string `json:"audioText" gorm:"-"` //瑙f瀽鍑虹殑鏂囨湰
+ IsFollowed constvar.BoolType `gorm:"type:tinyint;not null;default:2;comment:鏄惁鍏虫敞"` //鏄惁鍏虫敞 1鍏虫敞 2鏈叧娉�
+ Score float64 `json:"score"` // 缃俊搴�
+ Words []string `json:"words" gorm:"-"` //鍖归厤鍒扮殑鏂囧瓧鏁扮粍
+ Tags string `json:"-" gorm:"type:varchar(255);not null;default:'';comment:鍖归厤鍒扮殑鏂囧瓧锛岀敤閫楀彿鎷兼帴"` //鍖归厤鍒扮殑鏂囧瓧
+ AudioText string `json:"audioText" gorm:"-"` //瑙f瀽鍑虹殑鏂囨湰
}
AudioSearch struct {
@@ -49,8 +51,12 @@
} else {
slf.OccurrenceTime = slf.OccurrenceAt.Format("2006-01-02 15:04:05")
}
+ if slf.Tags != "" {
+ slf.Words = strings.Split(slf.Tags, ",")
+ }
return
}
+
func NewAudioSearch() *AudioSearch {
return &AudioSearch{Orm: mysqlx.GetDB()}
}
diff --git a/models/text.go b/models/text.go
index 1818ee0..bd9360a 100644
--- a/models/text.go
+++ b/models/text.go
@@ -10,7 +10,7 @@
// Word 鏂囧瓧
Word struct {
gorm.Model
- Content string `gorm:"uniqueIndex:locomotive_number_Word;type:varchar(255);not null;default:'';comment:闊抽鍚嶇О" json:"content"` // 鏂囧瓧
+ Content string `gorm:"uniqueIndex:locomotive_number_Word;type:varchar(255);not null;default:'';comment:鏂囧瓧" json:"content"` // 鏂囧瓧
LocomotiveNumber string `gorm:"uniqueIndex:locomotive_number_Word;type:varchar(255);not null;default:'';comment:鏈鸿溅鍙�" json:"locomotiveNumber"` // 鏈鸿溅鍙�
}
diff --git a/service/process.go b/service/process.go
index 1d1595a..29eb5f3 100644
--- a/service/process.go
+++ b/service/process.go
@@ -13,6 +13,7 @@
"speechAnalysis/constvar"
"speechAnalysis/models"
"speechAnalysis/pkg/logx"
+ "strings"
)
// Response 缁撴瀯浣撶敤浜庡瓨鍌ㄥ搷搴斾綋鐨勫唴瀹�
@@ -110,15 +111,18 @@
return
}
logx.Infof("AnalysisAudio result: %v", resp)
+ words := GetWordFromText(resp.Result, audio)
+
err = models.WithTransaction(func(db *gorm.DB) error {
- err = models.NewAudioSearch().SetID(audioId).UpdateByMap(map[string]interface{}{
+ err = models.NewAudioSearch().SetOrm(db).SetID(audioId).UpdateByMap(map[string]interface{}{
"audio_status": constvar.AudioStatusFinish,
"score": resp.Score,
+ "tags": strings.Join(words, ","),
})
if err != nil {
return err
}
- err = models.NewAudioTextSearch().Save(&models.AudioText{
+ err = models.NewAudioTextSearch().SetOrm(db).Save(&models.AudioText{
AudioID: audio.ID,
AudioText: resp.Result,
})
@@ -126,9 +130,26 @@
})
if err != nil {
logx.Infof("AnalysisAudio success but update record failed: %v", err)
+ _ = models.NewAudioSearch().SetID(audioId).UpdateByMap(map[string]interface{}{"audio_status": constvar.AudioStatusFailed})
return
}
}()
return nil
}
+
+func GetWordFromText(text string, audio *models.Audio) (words []string) {
+ if audio == nil {
+ return nil
+ }
+ wordRecords, err := models.NewWordSearch().SetLocomotiveNumber(audio.LocomotiveNumber).FindNotTotal()
+ if err != nil || len(wordRecords) == 0 {
+ return nil
+ }
+ for _, v := range wordRecords {
+ if strings.Contains(text, v.Content) {
+ words = append(words, v.Content)
+ }
+ }
+ return words
+}
--
Gitblit v1.8.0