| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- package vosk_api
- import (
- "encoding/json"
- "github.com/gorilla/websocket"
- "io"
- "net/url"
- "os"
- )
- const Host = "192.168.50.135"
- const Port = "2700"
- const buffsize = 8000
- type Message struct {
- Result []struct {
- Conf float64
- End float64
- Start float64
- Word string
- }
- Text string
- }
- var m Message
- func GetResult(audioFileFullPath string) error {
- u := url.URL{Scheme: "ws", Host: Host + ":" + Port, Path: ""}
- println("connecting to ", u.String())
- // Opening websocket connection
- c, _, err := websocket.DefaultDialer.Dial(u.String(), nil)
- if err != nil {
- return err
- }
- defer c.Close()
- f, err := os.Open(audioFileFullPath)
- if err != nil {
- return err
- }
- for {
- buf := make([]byte, buffsize)
- dat, err := f.Read(buf)
- if dat == 0 && err == io.EOF {
- err = c.WriteMessage(websocket.TextMessage, []byte("{\"eof\" : 1}"))
- if err != nil {
- return err
- }
- break
- }
- if err != nil {
- return err
- }
- err = c.WriteMessage(websocket.BinaryMessage, buf)
- if err != nil {
- return err
- }
- // Read message from server
- _, _, err = c.ReadMessage()
- if err != nil {
- return err
- }
- }
- // Read final message from server
- _, msg, err := c.ReadMessage()
- if err != nil {
- return err
- }
- // Closing websocket connection
- err = c.WriteMessage(websocket.CloseMessage, websocket.FormatCloseMessage(websocket.CloseNormalClosure, ""))
- if err != nil {
- return err
- }
- // Unmarshalling received message
- err = json.Unmarshal(msg, &m)
- if err != nil {
- return err
- }
- println(m.Text)
- return nil
- }
|