README.ru.md 4.3 KB

Русский | English

Build Status Go Report Card

yask

Инструмент для работы с сервисом синтеза и распознавания речи Yandex Speech Kit (подробнее о сервисе https://cloud.yandex.ru/docs/speechkit/) для языка программирования golang. Инструмент позволяет синтезировать речь из тескта, а так же распознавать текст из звукового потока.

Перед началом работы необходимо зарегистрироваться на https://cloud.yandex.ru/ для получения API-ключа и идентификатора директирии (подробнее https://cloud.yandex.ru/docs).

Форматы аудиопотока

Синтез речи из текста

В результате примера получим файл в формате wav, готовый для воспроизведения в любой программе-плеере. Битрейт по умолчанию 8000.

import (
	"log"
	"os"

	"github.com/fcg-xvii/go-tools/speech/yask"
)

func main() {
	yaFolderID := "b1g..."    // идентификатор директории в yandex
	yaAPIKey := "AQVNy..."    // ключ api yandex
	text := "Привет, это тест синтеза речи с помощью сервиса Яндекса" // текст для синтеза

	// инициализация конфигурации для синтеза (по умоланию установлен формат lpcm)
	config := yask.TTSDefaultConfigText(yaFolderID, yaAPIKey, text)

	// синтез речи
	r, err := yask.TextToSpeech(config)
	if err != nil {
		log.Println(err)
		return
	}

    // файл для сохранения результата
	f, err := os.OpenFile("tts.wav", os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0655)
	if err != nil {
		log.Println(err)
		return
	}
	defer f.Close()

    // кодировка lpcm в wav формат
	if err := yask.EncodePCMToWav(r, f, config.Rate, 16, 1); err != nil {
		log.Println(err)
		return
	}
}

Распознавание речи в текст

Пример разпознавания коротких аудио. В примере используется файл в формате wav, который допускается в использовании со значением формата конфигурации lpcm

package main

import (
	"log"
	"os"

	"github.com/fcg-xvii/go-tools/speech/yask"
)

func main() {
	yaFolderID := "b1g4..." // идентификатор директории в yandex
	yaAPIKey := "AQVNyr..." // ключ api yandex
	dataFileName := "data.wav" // файл в формате wav для распознавания

    // открытие аудиофайла
	f, err := os.Open(dataFileName)
	if err != nil {
		log.Println(err)
		return
	}
	defer f.Close()

    // создание конфигурации распознавания
	config := yask.STTConfigDefault(yaFolderID, yaAPIKey, f)

    // Распознавание звука в текст
	text, err := yask.SpeechToTextShort(config)
	if err != nil {
		log.Println(err)
		return
	}

	log.Println(text)
}

Лицензия

The MIT License (MIT), подробнее LICENSE.