From 42e62be0f5cb0d33761769ecae4e274ba8f7cbb6 Mon Sep 17 00:00:00 2001 From: Pax1601 Date: Thu, 28 Nov 2024 20:08:43 +0100 Subject: [PATCH] Started google cloud tests --- frontend/react/src/audio/audiomanager.ts | 28 ----------- .../react/src/audio/texttospeechsource.ts | 2 +- frontend/server/package.json | 1 + frontend/server/src/app.ts | 6 +-- frontend/server/src/routes/api/speech.ts | 47 +++++++++++++++++++ .../server/src/routes/api/texttospeech.ts | 14 ------ 6 files changed, 52 insertions(+), 46 deletions(-) create mode 100644 frontend/server/src/routes/api/speech.ts delete mode 100644 frontend/server/src/routes/api/texttospeech.ts diff --git a/frontend/react/src/audio/audiomanager.ts b/frontend/react/src/audio/audiomanager.ts index b3973d03..9bc8b25a 100644 --- a/frontend/react/src/audio/audiomanager.ts +++ b/frontend/react/src/audio/audiomanager.ts @@ -158,8 +158,6 @@ export class AudioManager { this.#devices = devices; AudioManagerDevicesChangedEvent.dispatch(devices); }); - - this.#startSpeechRecognition(); } stop() { @@ -330,30 +328,4 @@ export class AudioManager { if (this.#socket?.readyState == 1) this.#socket?.send(new Uint8Array([AudioMessageType.settings, ...Buffer.from(JSON.stringify(message), "utf-8")])); } - - #startSpeechRecognition() { - const grammar = - "#JSGF V1.0; grammar colors; public = aqua | azure | beige | bisque | black | blue | brown | chocolate | coral | crimson | cyan | fuchsia | ghostwhite | gold | goldenrod | gray | green | indigo | ivory | khaki | lavender | lime | linen | magenta | maroon | moccasin | navy | olive | orange | orchid | peru | pink | plum | purple | red | salmon | sienna | silver | snow | tan | teal | thistle | tomato | turquoise | violet | white | yellow ;"; - //@ts-ignore - const recognition = new window.webkitSpeechRecognition(); - //@ts-ignore - const speechRecognitionList = new window.webkitSpeechGrammarList(); - speechRecognitionList.addFromString(grammar, 1); - recognition.grammars = speechRecognitionList; - recognition.continuous = true; - recognition.lang = "en-US"; - recognition.interimResults = true; - //recognition.maxAlternatives = 1; - - const diagnostic = document.querySelector(".output"); - const bg = document.querySelector("html"); - recognition.start(); - - - recognition.onresult = (event) => { - const color = event.results[0][0].transcript; - diagnostic.textContent = `Result received: ${color}`; - bg.style.backgroundColor = color; - }; - } } diff --git a/frontend/react/src/audio/texttospeechsource.ts b/frontend/react/src/audio/texttospeechsource.ts index 497f73f5..85df8735 100644 --- a/frontend/react/src/audio/texttospeechsource.ts +++ b/frontend/react/src/audio/texttospeechsource.ts @@ -26,7 +26,7 @@ export class TextToSpeechSource extends AudioSource { body: JSON.stringify({ text }), // Send the data in JSON format }; - fetch(getApp().getExpressAddress() + `/api/texttospeech/generate`, requestOptions) + fetch(getApp().getExpressAddress() + `/api/speech/generate`, requestOptions) .then((response) => { if (response.status === 200) { console.log(`Text to speech generate correctly`); diff --git a/frontend/server/package.json b/frontend/server/package.json index 453b620b..25cb38f9 100644 --- a/frontend/server/package.json +++ b/frontend/server/package.json @@ -10,6 +10,7 @@ }, "private": true, "dependencies": { + "@google-cloud/speech": "^6.7.0", "appjs": "^0.0.20", "appjs-win32": "^0.0.19", "body-parser": "^1.20.2", diff --git a/frontend/server/src/app.ts b/frontend/server/src/app.ts index 3e996833..605fbc78 100644 --- a/frontend/server/src/app.ts +++ b/frontend/server/src/app.ts @@ -27,7 +27,7 @@ module.exports = function (configLocation, viteProxy) { "databases" ) ); - const textToSpeechRouter = require("./routes/api/texttospeech")(); + const speechRouter = require("./routes/api/speech")(); /* Load the config and create the express app */ let config = {}; @@ -76,12 +76,12 @@ module.exports = function (configLocation, viteProxy) { app.use("/api/airbases", airbasesRouter); app.use("/api/elevation", elevationRouter); app.use("/api/databases", databasesRouter); - app.use("/api/texttospeech", textToSpeechRouter); + app.use("/api/speech", speechRouter); app.use("/resources", resourcesRouter); app.use("/express/api/airbases", airbasesRouter); app.use("/express/api/elevation", elevationRouter); app.use("/express/api/databases", databasesRouter); - app.use("/express/api/texttospeech", textToSpeechRouter); + app.use("/express/api/speech", speechRouter); app.use("/express/resources", resourcesRouter); /* Set default index */ diff --git a/frontend/server/src/routes/api/speech.ts b/frontend/server/src/routes/api/speech.ts new file mode 100644 index 00000000..af4a445e --- /dev/null +++ b/frontend/server/src/routes/api/speech.ts @@ -0,0 +1,47 @@ +import express = require("express"); +import fs = require("fs"); +var gtts = require("node-gtts")("en"); + +const router = express.Router(); + +module.exports = function () { + router.put("/generate", (req, res, next) => { + res.set({ "Content-Type": "audio/mpeg" }); + gtts.stream(req.body.text).pipe(res); + }); + + router.get("/recognize", (req, res, next) => { + //// Imports the Google Cloud client library + //const speech = require("@google-cloud/speech"); +// + //// Creates a client + //const client = new speech.SpeechClient(); +// + //// The path to the remote LINEAR16 file + //const gcsUri = "gs://cloud-samples-data/speech/brooklyn_bridge.raw"; +// + //// The audio file's encoding, sample rate in hertz, and BCP-47 language code + //const audio = { + // uri: gcsUri, + //}; + //const config = { + // encoding: "LINEAR16", + // sampleRateHertz: 16000, + // languageCode: "en-US", + //}; + //const request = { + // audio: audio, + // config: config, + //}; +// + //// Detects speech in the audio file + //client.recognize(request).then((response) => { + // const transcription = response.results + // .map((result) => result.alternatives[0].transcript) + // .join("\n"); + // console.log(`Transcription: ${transcription}`); + //}); + }); + + return router; +}; diff --git a/frontend/server/src/routes/api/texttospeech.ts b/frontend/server/src/routes/api/texttospeech.ts deleted file mode 100644 index 95fffee5..00000000 --- a/frontend/server/src/routes/api/texttospeech.ts +++ /dev/null @@ -1,14 +0,0 @@ -import express = require('express'); -import fs = require('fs'); -var gtts = require('node-gtts')('en'); - -const router = express.Router(); - -module.exports = function () { - router.put( "/generate", ( req, res, next ) => { - res.set({'Content-Type': 'audio/mpeg'}); - gtts.stream(req.body.text).pipe(res); - }); - - return router; -} \ No newline at end of file