vosk_client.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. package vosk_api
  2. import (
  3. "encoding/json"
  4. "github.com/gorilla/websocket"
  5. "io"
  6. "net/url"
  7. "os"
  8. )
  9. const Host = "192.168.50.135"
  10. const Port = "2700"
  11. const buffsize = 8000
  12. type Message struct {
  13. Result []struct {
  14. Conf float64
  15. End float64
  16. Start float64
  17. Word string
  18. }
  19. Text string
  20. }
  21. var m Message
  22. func GetResult(audioFileFullPath string) error {
  23. u := url.URL{Scheme: "ws", Host: Host + ":" + Port, Path: ""}
  24. println("connecting to ", u.String())
  25. // Opening websocket connection
  26. c, _, err := websocket.DefaultDialer.Dial(u.String(), nil)
  27. if err != nil {
  28. return err
  29. }
  30. defer c.Close()
  31. f, err := os.Open(audioFileFullPath)
  32. if err != nil {
  33. return err
  34. }
  35. for {
  36. buf := make([]byte, buffsize)
  37. dat, err := f.Read(buf)
  38. if dat == 0 && err == io.EOF {
  39. err = c.WriteMessage(websocket.TextMessage, []byte("{\"eof\" : 1}"))
  40. if err != nil {
  41. return err
  42. }
  43. break
  44. }
  45. if err != nil {
  46. return err
  47. }
  48. err = c.WriteMessage(websocket.BinaryMessage, buf)
  49. if err != nil {
  50. return err
  51. }
  52. // Read message from server
  53. _, _, err = c.ReadMessage()
  54. if err != nil {
  55. return err
  56. }
  57. }
  58. // Read final message from server
  59. _, msg, err := c.ReadMessage()
  60. if err != nil {
  61. return err
  62. }
  63. // Closing websocket connection
  64. err = c.WriteMessage(websocket.CloseMessage, websocket.FormatCloseMessage(websocket.CloseNormalClosure, ""))
  65. if err != nil {
  66. return err
  67. }
  68. // Unmarshalling received message
  69. err = json.Unmarshal(msg, &m)
  70. if err != nil {
  71. return err
  72. }
  73. println(m.Text)
  74. return nil
  75. }