You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
77 lines
1.8 KiB
77 lines
1.8 KiB
package speech_test
|
|
|
|
import (
|
|
"yunyan/sys/google/speech"
|
|
"fmt"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
// 运行前替换为真实的服务账号 JSON 路径与 gs:// 音频地址
|
|
const (
|
|
kGoogleSaJson = "" // 例:/Users/.../smart-bluetooth-447104-2b269474bd72.json
|
|
kTestGsURI = "" // 例:gs://your-bucket/your-audio.wav
|
|
)
|
|
|
|
func newTestSys(t *testing.T) speech.ISys {
|
|
if kGoogleSaJson == "" {
|
|
t.Skip("kGoogleSaJson is empty, skip")
|
|
}
|
|
sys, err := speech.NewSys(
|
|
speech.SetJsonPath(kGoogleSaJson),
|
|
)
|
|
if err != nil {
|
|
t.Fatalf("NewSys err: %v", err)
|
|
}
|
|
return sys
|
|
}
|
|
|
|
func Test_E2E(t *testing.T) {
|
|
if kTestGsURI == "" {
|
|
t.Skip("kTestGsURI is empty, skip")
|
|
}
|
|
sys := newTestSys(t)
|
|
taskID, err := sys.CreateTask(kTestGsURI, "en-US", true, "")
|
|
if err != nil {
|
|
t.Fatalf("CreateTask err: %v", err)
|
|
}
|
|
fmt.Printf("CreateTask ok, taskID=%s\n", taskID)
|
|
|
|
deadline := time.Now().Add(10 * time.Minute)
|
|
for time.Now().Before(deadline) {
|
|
status, contexts, err := sys.QueryTask(taskID)
|
|
if err != nil {
|
|
t.Fatalf("QueryTask err: %v", err)
|
|
}
|
|
fmt.Printf("status=%s sentences=%d\n", status, len(contexts))
|
|
if status == speech.StatusSuccess {
|
|
for i, c := range contexts {
|
|
if i > 5 {
|
|
break
|
|
}
|
|
fmt.Printf(" [%s %d-%d] %s\n", c.Speaker, c.StartTime, c.EndTime, c.Content)
|
|
}
|
|
return
|
|
}
|
|
if status == speech.StatusFailed {
|
|
t.Fatalf("task failed")
|
|
}
|
|
time.Sleep(15 * time.Second)
|
|
}
|
|
t.Fatalf("task did not finish")
|
|
}
|
|
|
|
func Test_MissingKey(t *testing.T) {
|
|
_, err := speech.NewSys()
|
|
if err == nil {
|
|
t.Errorf("expect error when JSON missing, got nil")
|
|
}
|
|
}
|
|
|
|
func Test_RejectHttpURL(t *testing.T) {
|
|
sys := newTestSys(t)
|
|
_, err := sys.CreateTask("https://example.com/foo.wav", "en-US", false, "")
|
|
if err == nil {
|
|
t.Errorf("expect error for http URL, got nil")
|
|
}
|
|
}
|
|
|