{"id":21495711,"url":"https://github.com/deepgram/dgmrcp","last_synced_at":"2025-10-24T19:53:59.637Z","repository":{"id":37178139,"uuid":"291088854","full_name":"deepgram/dgmrcp","owner":"deepgram","description":"UniMRCP server plugin for Deepgram Brain","archived":false,"fork":false,"pushed_at":"2023-02-27T13:56:43.000Z","size":234,"stargazers_count":6,"open_issues_count":11,"forks_count":9,"subscribers_count":16,"default_branch":"master","last_synced_at":"2023-03-04T09:38:30.751Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/deepgram.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE-APACHE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-08-28T16:02:29.000Z","updated_at":"2023-03-04T09:38:30.752Z","dependencies_parsed_at":"2023-02-12T06:15:17.239Z","dependency_job_id":null,"html_url":"https://github.com/deepgram/dgmrcp","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deepgram%2Fdgmrcp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deepgram%2Fdgmrcp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deepgram%2Fdgmrcp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deepgram%2Fdgmrcp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/deepgram","download_url":"https://codeload.github.com/deepgram/dgmrcp/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":226064537,"owners_count":17568036,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-23T16:13:00.895Z","updated_at":"2025-10-24T19:53:54.601Z","avatar_url":"https://github.com/deepgram.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Deepgram Logo](dg-black-logo.png)\n\nThis is a server plugin for [UniMRCP](https://unimrcp.org/) to allow\n[Deepgram Brain](https://deepgram.com) to be used as a\n[`speechrecog`](https://tools.ietf.org/html/rfc6787#section-9)\nresource in an MRCP server.\n\n## Installation\n\nDownload the `libdgmrcp.so` library from the\n[releases](https://github.com/deepgram/dgmrcp/releases) page.\n\nPlace the library file `libdgmrcp.so` in the UniMRCP plugins directory\n(for example, `/opt/unimrcp/plugin/`).\n\nThen edit the `\u003cplugin-factory\u003e` section of the UniMRCP server\nconfiguration file (for example,\n`/opt/unimrcp/conf/unimrcpserver.xml`). General information about\nconfiguring the UniMRCP server can be found in the Server\nConfiguration Manual on [this\npage](http://unimrcp.org/solutions/server).\n\nA minimum configuration is as follows:\n\n```xml\n\u003cplugin-factory\u003e\n  \u003cengine id=\"Deepgram\" name=\"libdgmrcp\" enable=\"true\"\u003e\n    \u003cparam name=\"brain_url\" value=\"wss://api.deepgram.com/v1/\"/\u003e\n    \u003cparam name=\"brain_username\" value=\"YOUR_USER_EMAIL\"/\u003e\n    \u003cparam name=\"brain_password\" value=\"YOUR_API_KEY\"/\u003e\n  \u003c/engine\u003e\n\u003c/plugin-factory\u003e\n```\n\n### Configuration\n\nThe following options can be specified:\n\n| name | value | description |\n| ---  | ---   | ---\n| brain_url | string (required) | The URL of the Deepgram ASR API. You can set this to `wss://api.deepgram.com/v1/` to use Deepgram's hosted API, or set it to the URL of your on-prem deployment. Note the trailing slash, which is significant. |\n| brain_username | string | Your email. |\n| brain_password | string | Your [API key](https://developers.deepgram.com/documentation/getting-started/authentication/#create-an-api-key). |\n| model | string | The default ASR model to use. |\n| language | string | The default ASR language to use. |\n| sensitivity_level | float | The default VAD sensitivity level, between 0.0 and 1.0. |\n| plaintext_results | boolean | If `true`, then results in a `RECOGNITION-COMPLETE` message will be in plain text instead of the standard [NLSML](https://tools.ietf.org/html/rfc6787#section-6.3.1). Note that this does not conform to the MRCP specification, but it can be convenient for testing and development. |\n\nThe following [vendor-specific\nparameters](https://tools.ietf.org/html/rfc6787#section-6.2.16) are\nsupported in a `RECOGNIZE` or `SET-PARAMS` message. In cases where a\nparameter can specified both here and in the plugin config, the\nparameters here take precedence.\n\n| name | value | description |\n| ---  | ---   | ---\n| com.deepgram.model | string | The ASR model to use. |\n| com.deepgram.ner | bool | Enable/disable named entity recognition. |\n| com.deepgram.numerals | bool | Enable/disable the numerals feature. |\n| com.deepgram.no_delay | bool | Enable/disable the `no_delay` flag. |\n| com.deepgram.plugin | string | Configure a plugin. Multiple plugins can be given, separated by commas. |\n| com.deepgram.keywords | string | Boost keywords. Multiple keywords can be given, separated by commas. |\n| com.deepgram.keyword_boost | string | Specify either `standard` or `legacy` keyword boosting strategy. |\n\n## Building\n\nA Dockerfile is provided that will download and build UniMRCP and its\ndependencies, as well as build the server plugin. This is used by\nGitHub Actions to build the plugin for releases.\n\nThe build environment itself downloads UniMRCP from its package\nrepo. In order to access the package repo, you need credentials, which\ncan be acquired from the [UniMRCP website]. These credentials must be\npassed to the Docker build environment:\n\n[UniMRCP website]: https://unimrcp.org/profile-registration\n\n```bash\n$ docker build \\\n    --build-arg UNIMRCP_USERNAME=your_unimrcp_username \\\n    --build-arg UNIMRCP_PASSWORD=your_unimrcp_password \\\n    -t dgmrcp \\\n    .\n```\n\nIn order to extract the plugin, we need to create a container from the\nimage, and then copy the shared object out:\n\n```bash\nCONTAINER=$(docker create dgmrcp) \\\n  \u0026\u0026 docker cp $CONTAINER:/dgmrcp/target/release/libdgmrcp.so ./ \\\n  \u0026\u0026 docker rm $CONTAINER\n```\n\n\u003e If there is a better way to extract a file from a Docker image\n\u003e without creating an intermediate container, please let us know!\n\n## Development\n\nWhile the Docker image can be used for local development, it may be\nmore convenient to work in a VM. A [Vagrantfile](./Vagrantfile) is\nprovided along with some Ansible roles to get you up and running. As\nwith the Docker image, you'll need credentials for the UniMRCP RPM\nrepository.\n\n```bash\nvagrant up\n\n# If you edit the Ansible roles or if something fails during the initial setup:\nvagrant provision\n\nvagrant ssh\n```\n\nTo get started with development, follow these steps:\n\n1. Build the `dgmrcp` plugin in the shared folder that is mounted in\n   the VM, and copy or symlink it into the UniMRCP plugin directory.\n\n```bash\ncd /vagrant\ncargo build\n\nsudo mkdir /opt/unimrcp/plugin\nln -s /vagrant/target/debug/libdgmrcp.so /opt/unimrcp/plugin/\n```\n\n2. Edit the UniMRCP server config file at\n   `/opt/unimrcp/conf/unimrcpserver.xml`, and add the `dgmrcp` plugin\n   to the `\u003cplugin-factory\u003e` section as described above.\n\n3. Run the UniMRCP server.\n\n```bash\ncd /opt/unimrcp/bin\n./unimrcpserver\n```\n\n4. Run the UniMRCP client CLI and send a test request. UniMRCP\n   includes two clients, `unimrcpclient` and `umc`, which have similar\n   but maybe slightly different features. Their source code is found\n   [here](https://github.com/unispeech/unimrcp/tree/master/platforms).\n\n```bash\ncd /opt/unimrcp/bin\n./unimrcpclient\n\u003e run recog\n```\n\nIf all goes well, both the client and the server should show logs\nthat, among other messages, include a `RECOGNIZE` and\n`RECOGNITION-COMPLETE` message. If this doesn't work or if these\ninstructions are unclear, please [open an issue] or a PR!\n\n[open an issue]: https://github.com/deepgram/dgmrcp/issues\n\n## License\n\nLicensed under either of\n\n * Apache License, Version 2.0\n   ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)\n * MIT license\n   ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)\n\nat your option.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdeepgram%2Fdgmrcp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdeepgram%2Fdgmrcp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdeepgram%2Fdgmrcp/lists"}