40760aa884
- server:Go 网关(WS 流式识别中继/计费配额/微信登录支付 mock/反馈/埋点),gummy provider 已真实联调 - desktop:Tauri 2(全局快捷键 push-to-talk/浮层/托盘/设置/登录购买/反馈/首启引导) - android:Compose 主 App + IME(键盘内录音直传) - ios:App + 键盘扩展(1A spike 实证键盘内不可录音,走 deep link 听写) - design/design-pipeline:设计系统 + token 导出 iOS/Android 主题 - doc:前后端设计文档(HTML);web:官网宣传页;todo:任务看板 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
45 lines
907 B
Go
45 lines
907 B
Go
package asr
|
|
|
|
import (
|
|
"context"
|
|
"strings"
|
|
"testing"
|
|
|
|
"dudu/server/pkg/protocol"
|
|
)
|
|
|
|
func TestMockProviderStreams(t *testing.T) {
|
|
p := NewMock()
|
|
p.Script = []string{"你好,世界。"}
|
|
s, err := p.StartSession(context.Background(), SessionConfig{SampleRate: 16000})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
frame := make([]byte, protocol.FrameBytes)
|
|
for i := 0; i < 10; i++ { // 1s 音频 = 10 帧 → 全句 6 字识别完
|
|
if err := s.SendAudio(frame); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|
|
if err := s.Close(); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
var finals []string
|
|
partials := 0
|
|
for r := range s.Results() {
|
|
if r.IsFinal {
|
|
finals = append(finals, r.Text)
|
|
} else {
|
|
partials++
|
|
}
|
|
}
|
|
got := strings.Join(finals, "")
|
|
if got != "你好,世界。" {
|
|
t.Fatalf("final text mismatch: %q (finals=%v)", got, finals)
|
|
}
|
|
if partials == 0 {
|
|
t.Fatal("expect partial results before finals")
|
|
}
|
|
}
|