From 1856ca9be44a08ef5bbb6a14bee494538c68a9f6 Mon Sep 17 00:00:00 2001
From: Sandeep Shewalkar <sandeepss@mkcl.org>
Date: Wed, 13 Mar 2019 16:31:13 +0530
Subject: [PATCH] new module added for google stt and stt

new module added which is wrapper over "google.golang.org/api/speech/v1beta1" for google stt and stt
---
 aimdl/googleapi/googleclient.go |  53 ++++++++++++++++++++++
 aimdl/googleapi/speechtotext.go |  76 ++++++++++++++++++++++++++++++++
 aimdl/googleapi/texttospeech.go |  61 +++++++++++++++++++++++++
 aimdl/sample/brooklyn.flac      | Bin 0 -> 33464 bytes
 aimdl/sample/example.go         |  39 ++++++++++++++++
 5 files changed, 229 insertions(+)
 create mode 100644 aimdl/googleapi/googleclient.go
 create mode 100644 aimdl/googleapi/speechtotext.go
 create mode 100644 aimdl/googleapi/texttospeech.go
 create mode 100644 aimdl/sample/brooklyn.flac
 create mode 100644 aimdl/sample/example.go

diff --git a/aimdl/googleapi/googleclient.go b/aimdl/googleapi/googleclient.go
new file mode 100644
index 0000000..5e87975
--- /dev/null
+++ b/aimdl/googleapi/googleclient.go
@@ -0,0 +1,53 @@
+package googleapi
+
+import (
+	"context"
+	"net/http"
+
+	"corelab.mkcl.org/MKCLOS/coredevelopmentplatform/corepkgv2/loggermdl"
+	"golang.org/x/oauth2/jwt"
+)
+
+//ClientConfig Google API config from service file
+type ClientConfig struct {
+	Email      string
+	PrivateKey string
+	TokenURL   string `default:"https://accounts.google.com/o/oauth2/token"`
+}
+
+//GetClient Get the client configured to send authenticated requests
+func GetClient(c ClientConfig) *http.Client {
+	loggermdl.LogInfo("IN GetClient")
+	if c.TokenURL == "" {
+		c.TokenURL = "https://accounts.google.com/o/oauth2/token"
+	}
+	conf := &jwt.Config{
+		Email: c.Email,
+		// The contents of your RSA private key or your PEM file
+		// that contains a private key.
+		// If you have a p12 file instead, you
+		// can use `openssl` to export the private key into a pem file.
+		//
+		//    $ openssl pkcs12 -in key.p12 -passin pass:notasecret -out key.pem -nodes
+		//
+		// The field only supports PEM containers with no passphrase.
+		// The openssl command will convert p12 keys to passphrase-less PEM containers.
+		PrivateKey: []byte(c.PrivateKey),
+		TokenURL:   c.TokenURL,
+		Scopes: []string{
+			"https://www.googleapis.com/auth/bigquery",
+			"https://www.googleapis.com/auth/blogger",
+			"https://www.googleapis.com/auth/cloud-platform",
+		},
+		// If you would like to impersonate a user, you can
+		// create a transport with a subject. The following GET
+		// request will be made on the behalf of user@example.com.
+		// Optional.
+	}
+	// Initiate an http.Client, the following GET request will be
+	// authorized and authenticated on the behalf of user@example.com.
+	client := conf.Client(context.Background())
+	loggermdl.LogInfo("Client created")
+	loggermdl.LogInfo("OUT GetClient")
+	return client
+}
diff --git a/aimdl/googleapi/speechtotext.go b/aimdl/googleapi/speechtotext.go
new file mode 100644
index 0000000..85b1e2a
--- /dev/null
+++ b/aimdl/googleapi/speechtotext.go
@@ -0,0 +1,76 @@
+package googleapi
+
+import (
+	"encoding/base64"
+	"net/http"
+
+	"corelab.mkcl.org/MKCLOS/coredevelopmentplatform/corepkgv2/loggermdl"
+	speech "google.golang.org/api/speech/v1beta1"
+
+	"io/ioutil"
+)
+
+//AudioConfig Google Speech-to-Text config
+type AudioConfig struct {
+	FilePath        string
+	LanguageCode    string
+	AudioEncoding   string
+	AudioSampleRate int64
+}
+
+//SpeechToText get the speech to text
+func SpeechToText(client *http.Client, c AudioConfig) (string, error) {
+	loggermdl.LogInfo("IN SpeechToText")
+	if c.AudioEncoding == "" {
+		c.AudioEncoding = "FLAC"
+	}
+	if c.AudioSampleRate == 0 {
+		c.AudioSampleRate = 16000
+	}
+	if c.LanguageCode == "" {
+		c.LanguageCode = "en-US"
+	}
+	speechService, err := speech.New(client)
+	if err != nil {
+		loggermdl.LogError("speechService Error: ", err)
+		loggermdl.LogInfo("OUT SpeechToText")
+		return "", err
+	}
+	fileDir := c.FilePath
+
+	audioData, err := ioutil.ReadFile(fileDir)
+	if err != nil {
+		loggermdl.LogError("ReadFile Error: ", err)
+		loggermdl.LogInfo("OUT SpeechToText")
+		return "", err
+	}
+
+	encoded := base64.StdEncoding.EncodeToString(audioData)
+	speechRecConfig := speech.RecognitionConfig{
+		SampleRate:   c.AudioSampleRate,
+		Encoding:     c.AudioEncoding,
+		LanguageCode: c.LanguageCode,
+	}
+	audio := speech.RecognitionAudio{
+		Content: encoded,
+	}
+	speechRequest := speech.SyncRecognizeRequest{
+		Audio:  &audio,
+		Config: &speechRecConfig,
+	}
+	syncRecCall := speechService.Speech.Syncrecognize(&speechRequest)
+	syncRecResponse, err := syncRecCall.Do()
+	if err != nil {
+		loggermdl.LogError("syncRecCall Error: ", err)
+		loggermdl.LogInfo("OUT SpeechToText")
+		return "", err
+	}
+	resp, err := syncRecResponse.MarshalJSON()
+	if err != nil {
+		loggermdl.LogError("syncRecResponse Error: ", err)
+		loggermdl.LogInfo("OUT SpeechToText")
+		return "", err
+	}
+	loggermdl.LogInfo("OUT SpeechToText")
+	return string(resp), nil
+}
diff --git a/aimdl/googleapi/texttospeech.go b/aimdl/googleapi/texttospeech.go
new file mode 100644
index 0000000..7d4296e
--- /dev/null
+++ b/aimdl/googleapi/texttospeech.go
@@ -0,0 +1,61 @@
+package googleapi
+
+import (
+	"net/http"
+
+	"corelab.mkcl.org/MKCLOS/coredevelopmentplatform/corepkgv2/loggermdl"
+	texttospeech "google.golang.org/api/texttospeech/v1beta1"
+)
+
+//TextConfig Google Text-to-Speech config
+type TextConfig struct {
+	Text          string
+	LanguageCode  string
+	AudioEncoding string
+}
+
+//TextToSpeech get the text to speech
+func TextToSpeech(client *http.Client, c TextConfig) (string, error) {
+	loggermdl.LogInfo("IN TextToSpeech")
+	texttospeechService, err := texttospeech.New(client)
+	if c.AudioEncoding == "" {
+		c.AudioEncoding = "MP3"
+	}
+	if c.LanguageCode == "" {
+		c.LanguageCode = "en-IN"
+	}
+	if err != nil {
+		loggermdl.LogError("texttospeechService Error: ", err)
+		loggermdl.LogInfo("OUT TextToSpeech")
+		return "", err
+	}
+	ttsConfig := texttospeech.AudioConfig{
+		AudioEncoding: c.AudioEncoding,
+	}
+	inputText := texttospeech.SynthesisInput{
+		Text: c.Text,
+	}
+	voiceParams := texttospeech.VoiceSelectionParams{
+		LanguageCode: c.LanguageCode,
+	}
+	ttsSpeechReq := texttospeech.SynthesizeSpeechRequest{
+		AudioConfig: &ttsConfig,
+		Input:       &inputText,
+		Voice:       &voiceParams,
+	}
+	ttsSpeechCall := texttospeechService.Text.Synthesize(&ttsSpeechReq)
+	syncResponse, err := ttsSpeechCall.Do()
+	if err != nil {
+		loggermdl.LogError("ttsSpeechCall Error", err)
+		loggermdl.LogInfo("OUT TextToSpeech")
+		return "", err
+	}
+	resp, err := syncResponse.MarshalJSON()
+	if err != nil {
+		loggermdl.LogError("syncResponse Error", err)
+		loggermdl.LogInfo("OUT TextToSpeech")
+		return "", err
+	}
+	loggermdl.LogInfo("OUT TextToSpeech")
+	return string(resp), nil
+}
diff --git a/aimdl/sample/brooklyn.flac b/aimdl/sample/brooklyn.flac
new file mode 100644
index 0000000000000000000000000000000000000000..44d6f9ecd2a297da58fd28faa164d78fba639167
GIT binary patch
literal 33464
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

literal 0
HcmV?d00001

diff --git a/aimdl/sample/example.go b/aimdl/sample/example.go
new file mode 100644
index 0000000..b64bb8b
--- /dev/null
+++ b/aimdl/sample/example.go
@@ -0,0 +1,39 @@
+package main
+
+import (
+	"fmt"
+
+	googleapi "corelab.mkcl.org/MKCLOS/coredevelopmentplatform/corepkgv2/aimdl/googleapi"
+)
+
+func main() {
+	//Google API Configuration
+	apiConf := googleapi.ClientConfig{
+		Email:      "youremail@yourdomain.iam.gserviceaccount.com",
+		PrivateKey: "-----BEGIN PRIVATE KEY-----\nYourRSAPrivateKey\n-----END PRIVATE KEY-----\n",
+	}
+
+	//OAuth configured Google client
+	googleClient := googleapi.GetClient(apiConf)
+
+	//AudioConfig for Google Speech-to-Text
+	audioConf := googleapi.AudioConfig{
+		FilePath: "brooklyn.flac",
+	}
+
+	audioResponse, err := googleapi.SpeechToText(googleClient, audioConf)
+	if err != nil {
+		fmt.Println(err)
+	}
+	fmt.Println(audioResponse)
+
+	textConf := googleapi.TextConfig{
+		Text: "Hello, darkness my old friend!",
+	}
+
+	textResponse, err := googleapi.TextToSpeech(googleClient, textConf)
+	if err != nil {
+		fmt.Println(err)
+	}
+	fmt.Println(textResponse)
+}
-- 
GitLab