From 4429637eac9d10ae922fabc34b9950ae80c0a79a Mon Sep 17 00:00:00 2001 From: saumya singh Date: Tue, 9 Feb 2021 11:28:16 -0800 Subject: [PATCH 1/2] add docs for offline --- .../custom-commands-offline/Run-CC-Offline.md | 123 ++++++++++++++++ ...ommands-create-new-offline-application.PNG | Bin 0 -> 16252 bytes .../sample/turn-on-off.json | 137 ++++++++++++++++++ 3 files changed, 260 insertions(+) create mode 100644 custom-commands/experimental/custom-commands-offline/Run-CC-Offline.md create mode 100644 custom-commands/experimental/custom-commands-offline/media/customcommands-create-new-offline-application.PNG create mode 100644 custom-commands/experimental/custom-commands-offline/sample/turn-on-off.json diff --git a/custom-commands/experimental/custom-commands-offline/Run-CC-Offline.md b/custom-commands/experimental/custom-commands-offline/Run-CC-Offline.md new file mode 100644 index 00000000..42ab1113 --- /dev/null +++ b/custom-commands/experimental/custom-commands-offline/Run-CC-Offline.md @@ -0,0 +1,123 @@ +# Running the Custom Command Embedded Service on Windows + +## Prerequisites + +### The host computer + +The host is an x-64 or arm-64 based computer that runs the Docker container. + +### Docker Engine + +Install Docker on your device: + +You need the Docker Engine installed on a host computer. Docker provides packages that configure the Docker environment on [macOS](https://docs.docker.com/docker-for-mac/), [Windows](https://docs.docker.com/docker-for-windows/), and [Linux](https://docs.docker.com/engine/install/). For a primer on Docker and container basics, see the [Docker overview](https://docs.docker.com/get-started/overview/). + +On **Windows**, Docker must also be configured to support Linux containers. + +### Familiarity with Docker + +You should have a basic understanding of Docker concepts, like registries, repositories, containers, and container images, as well as knowledge of basic docker commands. + +## Download Custom Commands container image with docker pull + +Since, offline Custom Commands is an experimental feature, currently, you will only be able to consume it based on explicit approval. Please reach out to our team, and we can help you onboard. + +Open a terminal (does not matter which folder) and type the following: + +* Login to ACR: ```sudo docker login ACR_NAME -u ACR_USER_NAME -p ACR_USER_PASSWORD``` +* Pull the image: ```docker pull **TBD**``` +* Make sure the image is downloaded correctly by running: ```docker image ls``` . Verify **TBDDockerImageName** is present in the result. + +## Container requirements and recommendations + +The below table lists minimum and recommended values for the container host. Your requirements may change depending on traffic volume. + +|Container| Minimum | Recommended | +|-----------|---------|-------------|--| +|Custom Commands|0.5 core, 256-MB memory|1 core, 512-MB memory + +* Each core must be at least 1.5 gigahertz (GHz) or faster. + +* Core and memory correspond to the `--cpus` and `--memory` settings, which are used as part of the [docker run](#run-container) command. + +## Run Custom Commands container image + +### Create mount folders + +On the host computer, create a folder structure as follows: + +```bash + mkdir DockerMount + cd DockerMount + mkdir input + mkdir output +``` + +These folders will be mounted to the docker container. + +### Run container + +Use the docker run command to run the container. +Example: + +```bash +docker run -p 5000:5000 +--cpus 1 --memory 512m +--mount type=bind,source=c:\Users\Public\DockerMount\input,destination=/app/input +--mount type=bind,source=c:\Users\Public\DockerMount\output,destination=/app/output +TBDFQDockerImageName +--CustomCommandsDataPath=/app/input +``` + +You should see this on the screen if everything went well: + +```cmd +Hosting environment: Production +Content root path: /app/ +Now listening on: http://[::]:5000 +Application started. Press Ctrl+C to shut down. +``` + +## Download your Custom Commands application to be run offline from the Speech Portal + +### Create an offline Custom Commands application + +Since, offline Custom Commands is an experimental feature, currently, you will only be able to consume it based on explicit approval. Please reach out to our team, and we can help you onboard. + +1. In the speech portal, create a new **offline** application. + + ![image](./media/customcommands-create-new-offline-application.png) + +1. Build your application. Please refer to [How-To documentation](https://docs.microsoft.com/en-us/azure/cognitive-services/speech-service/custom-commands) if you are new to Custom Commands and need help in authoring an application. +1. TBD: Add an offline sample which can be imported in +1. Train and Test your application. + +### Download offline application + +#### Prerequisite + +* A working offline CC application +* The application must be published + +In the left panel, select **Settings** > **Offline Application**. Download files. +At this point, two files should be downloaded. Verify that the file names adhere to the following naming convention: + +1. ```AppIdValue-StageValue-CultureValue_RuntimeDialogModel.Json```. Value for AppId, Stage and Culture of your offline application +2. ```ModelIdValue_SearchIndex.Json```. Value of the ModelId should be a GUID. +**Note**: In case you're using the default browser settings and download *offline application*, multiple times in the same location - the browser tend to append file names with serial numbers. Please delete those before placing them in the [DockerMount input folder](#create-mount-folders). + +## Configure Custom Commands container to use custom application + +1. Stop the Docker container if running. + * Get the container id: ```docker ps``` + * Stop the container: ```docker stop ``` +1. Move downloaded files to the [DockerMount **input** folder](#create-mount-folders) on the host computer. +1. [Run](#run-container) the container again. + +## Configure the C++ client application + +TODO: Add link to the Speech SDK documentation + +```text +"CustomCommandsUrl": "ws://localhost:5000/apps/53b8478a-0ca9-4fcb-a11b-a2b55cb30df0/stages/offline/cultures/en-us" +``` diff --git a/custom-commands/experimental/custom-commands-offline/media/customcommands-create-new-offline-application.PNG b/custom-commands/experimental/custom-commands-offline/media/customcommands-create-new-offline-application.PNG new file mode 100644 index 0000000000000000000000000000000000000000..2b30db7887b0031e03706df3a9562b7b82d86237 GIT binary patch literal 16252 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

>M~(`x?QRzG3K$NlP-pRLd8JmsX~HY7N+~V4 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 Date: Tue, 9 Feb 2021 11:32:39 -0800 Subject: [PATCH 2/2] add sample reference in docs --- .../experimental/custom-commands-offline/Run-CC-Offline.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/custom-commands/experimental/custom-commands-offline/Run-CC-Offline.md b/custom-commands/experimental/custom-commands-offline/Run-CC-Offline.md index 42ab1113..3ebb2d23 100644 --- a/custom-commands/experimental/custom-commands-offline/Run-CC-Offline.md +++ b/custom-commands/experimental/custom-commands-offline/Run-CC-Offline.md @@ -89,7 +89,7 @@ Since, offline Custom Commands is an experimental feature, currently, you will o ![image](./media/customcommands-create-new-offline-application.png) 1. Build your application. Please refer to [How-To documentation](https://docs.microsoft.com/en-us/azure/cognitive-services/speech-service/custom-commands) if you are new to Custom Commands and need help in authoring an application. -1. TBD: Add an offline sample which can be imported in +1. Alternatively, you could import [sample application](./sample/turn-on-off.json) provided as part of this documentation. 1. Train and Test your application. ### Download offline application