aeap-speech-to-text/index.js
Kevin Harwell 1f701bd265 Adding Asterisk external speech to text application
This patch adds basic functionality for translating speech to text, using
the Google speech API, from audio received over a websocket after a successful
negotiation with Asterisk using the Asterisk External Application Protocol.
2022-02-15 13:05:43 -06:00

64 lines
1.6 KiB
JavaScript
Executable file

#!/usr/bin/env node
/*
* Copyright 2022 Sangoma Technologies Corporation
* Kevin Harwell <kharwell@sangoma.com>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
const { Codecs } = require("./lib/codecs");
const { Languages } = require("./lib/languages");
const { getProvider } = require("./lib/provider");
const { getServer } = require("./lib/server");
const { dispatch } = require("./lib/dispatcher");
const argv = require("yargs/yargs")(process.argv.slice(2))
.command("$0 [options]", "Start a speech to text server", {
port: {
alias: "p",
desc: "Port to listen on",
default: 9099,
type: "number",
group: "Server",
},
})
.strict()
.argv;
const codecs = new Codecs(argv);
const languages = new Languages(argv);
const server = getServer("ws", argv);
server.on("connection", (client) => {
dispatch({
codecs: codecs,
languages: languages,
transport: client,
provider: getProvider("google", argv),
});
});
process.on("SIGINT", () => {
server.close();
process.exit(0);
});
process.on("SIGTERM", () => {
server.close();
process.exit(0);
});