package yask import ( "os" "testing" "git.ali33.ru/fcg-xvii/go-tools/text/config" _ "git.ali33.ru/fcg-xvii/go-tools/text/config/ini" ) var ( yaFolderID, yaAPIKey string ) func init() { if conf, err := config.FromFile("ini", "test_data/ya.config"); err == nil { yaFolderID = conf.ValueDefault("folder_id", yaFolderID).(string) yaAPIKey = conf.ValueDefault("api_key", yaAPIKey).(string) } } func TestTextToSpeech(t *testing.T) { if len(yaFolderID) == 0 { t.Log("ya config 'test_data/ya.config' not parsed. format 'ya_folder_id::ya_api_key") return } // init request config config := TTSDefaultConfigText(yaFolderID, yaAPIKey, "Привет, это тест синтеза речи с помощью сервиса Яндекса") config.Emotion = "good" config.Voice = VoiceJane r, err := TextToSpeech(config) if err != nil { t.Fatal(err) } f, err := os.OpenFile("test_data/tts.wav", os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0655) if err != nil { t.Fatal(err) } if err := EncodePCMToWav(r, f, config.Rate, 16, 1); err != nil { t.Fatal(err) } r.Close() f.Close() } func TestSpeechToTextShort(t *testing.T) { if len(yaFolderID) == 0 { t.Log("ya config 'test_data/ya.config' not parsed. format 'ya_folder_id::ya_api_key") return } f, err := os.Open("test_data/test_sound.wav") if err != nil { t.Fatal(err) } conf := STTConfigDefault(yaFolderID, yaAPIKey, f) text, err := SpeechToTextShort(conf) if err != nil { t.Fatal(err) } t.Log(text) } func TestVoiseFilter(t *testing.T) { // Get all voices items := Voices("", 0, 0) t.Log(len(voices), len(items), items) // Get only russian standard females items = Voices(LangRU, 2, 1) t.Log(len(voices), len(items), items) }