z_test.go 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package yask
  2. import (
  3. "os"
  4. "testing"
  5. "git.ali33.ru/fcg-xvii/go-tools/text/config"
  6. _ "git.ali33.ru/fcg-xvii/go-tools/text/config/ini"
  7. )
  8. var (
  9. yaFolderID, yaAPIKey string
  10. )
  11. func init() {
  12. if conf, err := config.FromFile("ini", "test_data/ya.config"); err == nil {
  13. yaFolderID = conf.ValueDefault("folder_id", yaFolderID).(string)
  14. yaAPIKey = conf.ValueDefault("api_key", yaAPIKey).(string)
  15. }
  16. }
  17. func TestTextToSpeech(t *testing.T) {
  18. if len(yaFolderID) == 0 {
  19. t.Log("ya config 'test_data/ya.config' not parsed. format 'ya_folder_id::ya_api_key")
  20. return
  21. }
  22. // init request config
  23. config := TTSDefaultConfigText(yaFolderID, yaAPIKey, "Привет, это тест синтеза речи с помощью сервиса Яндекса")
  24. config.Emotion = "good"
  25. config.Voice = VoiceJane
  26. r, err := TextToSpeech(config)
  27. if err != nil {
  28. t.Fatal(err)
  29. }
  30. f, err := os.OpenFile("test_data/tts.wav", os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0655)
  31. if err != nil {
  32. t.Fatal(err)
  33. }
  34. if err := EncodePCMToWav(r, f, config.Rate, 16, 1); err != nil {
  35. t.Fatal(err)
  36. }
  37. r.Close()
  38. f.Close()
  39. }
  40. func TestSpeechToTextShort(t *testing.T) {
  41. if len(yaFolderID) == 0 {
  42. t.Log("ya config 'test_data/ya.config' not parsed. format 'ya_folder_id::ya_api_key")
  43. return
  44. }
  45. f, err := os.Open("test_data/test_sound.wav")
  46. if err != nil {
  47. t.Fatal(err)
  48. }
  49. conf := STTConfigDefault(yaFolderID, yaAPIKey, f)
  50. text, err := SpeechToTextShort(conf)
  51. if err != nil {
  52. t.Fatal(err)
  53. }
  54. t.Log(text)
  55. }
  56. func TestVoiseFilter(t *testing.T) {
  57. // Get all voices
  58. items := Voices("", 0, 0)
  59. t.Log(len(voices), len(items), items)
  60. // Get only russian standard females
  61. items = Voices(LangRU, 2, 1)
  62. t.Log(len(voices), len(items), items)
  63. }