Files

61 lines
1.7 KiB
JavaScript

var fs = require("file-system");
const http = require("http");
const server = http.createServer();
const fileName = "./resources/recording.wav";
server.on("request", (request, response) => {
if (request.method == "POST" && request.url === "/uploadAudio") {
var recordingFile = fs.createWriteStream(fileName, { encoding: "utf8" });
request.on("data", function(data) {
recordingFile.write(data);
});
request.on("end", async function() {
recordingFile.end();
const transciption = await speechToTextAPI();
response.writeHead(200, { "Content-Type": "text/plain" });
response.end(transciption);
});
} else {
console.log("Error Check your POST request");
response.writeHead(405, { "Content-Type": "text/plain" });
}
});
async function speechToTextAPI() {
// Imports the Google Cloud client library
const speech = require("@google-cloud/speech");
const fs = require("fs");
// Creates a client
const client = new speech.SpeechClient();
// Reads a local audio file and converts it to base64
const file = fs.readFileSync(fileName);
const audioBytes = file.toString("base64");
// The audio file's encoding, sample rate in hertz, and BCP-47 language code
const audio = {
content: audioBytes
};
const config = {
encoding: "LINEAR16",
sampleRateHertz: 16000,
languageCode: "en-US"
};
const request = {
audio: audio,
config: config
};
// Detects speech in the audio file
const [response] = await client.recognize(request);
const transcription = response.results.map((result) => result.alternatives[0].transcript).join("\n");
console.log(`Transcription: ${transcription}`);
return transcription;
}
const port = 8888;
server.listen(port);
console.log(`Listening at ${port}`);