#!/usr/bin/env node /* * Copyright 2022 Sangoma Technologies Corporation * Kevin Harwell * * 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", }, provider: { desc: "Speech-to-text provider", default: "google", type: "string", }, }) .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(argv.provider, argv), }); }); process.on("SIGINT", () => { server.close(); process.exit(0); }); process.on("SIGTERM", () => { server.close(); process.exit(0); });