Settings
Configuration of your SYNQ radio device is managed through the transcript viewer application.
Signing In
To access the transcript viewer:
- Sign into MyStore as a Location Administrator.
- Select Radio.
Making Changes
- Select the Settings tab from the sidebar.
- Select the desired device.
- This loads a read only view of the current settings.
- Click the ⋮ menu and select Edit
- The settings are now editable.
- Make the desired changes.
- Click the Save button to commit your changes.
Adjusting Volume
Setting appropriate volume levels is critical to a well performing system. You want levels to be loud enough to hear, but no so loud that it causes distortion or clipping of the audio signal.
To make volume adjustments:
- Select the Audio tab.
- Speaker Volume controls the output volume of the audio played over the donor radio.
- Microphone Volume controls the capture volume of the audio received by the donor radio.
The donor radio also has physical volume controls (knobs or buttons). In most cases the volume of the donor radio should be set to 50% or lower.
Speech Providers
SYNQ Radio allows you to select your preferred cloud provider for speech-to-text and text-to-speech services.
To change speech provider settings:
- Select the Speech tab.
- Select the desired speech provider Type.
- The
Defaultprovider type isAzure
- The
- Depending on the selected type different provider specific configuration settings appear.
- Typically you will need to configure settings such as:
- Connection information like a URL and API Key.
- The LLM models to use when transcribing and generating speech.
- The language to use when transcribing and generating speech.
- The voice to use when generating speech.
- Click Save.
Azure
- Subscription Key: The Azure subscription key for the speech service.
- Region: The Azure region name. For example,
eastus. - Voice Name: The voice name. For example,
en-US-JennyNeural. - Language: The language of the speech synthesizer. For example,
en-US.
Azure OpenAI
- API Key: The Azure OpenAI API Key.
- Endpoint: The Azure URL endpoint where your OpenAI service is hosted. For example
https://example-resource.cognitiveservices.azure.com - API Version: The API version to use when communicating with the service.
- STT Deployment: ID of the speech-to-text model to use. For example,
gpt-4o-transcribe. - Language: The ISO-639-1 language of the input audio. For example,
en. - Prompt: The prompt to provide to the speech service.
- TTS Deployment: ID of the text-to-speech model to use. For example,
gpt-4o-mini-tts. - Voice Name: The voice name. For example,
alloy. - Instructions: Additional instructions to control the voice of your generated audio.
- Speed: The speed of the generated audio. Select a value from
0.25to4.0.1.0is the default.
Groq
- API Version: The API version to use when communicating with the service.
- Language: The ISO-639-1 language of the input audio. For example,
en. - STT Model: ID of the speech-to-text model to use. For example,
whisper-large-v3. - STT Prompt: Additional instruction to provide the the speech-to-text model.
- TTS Model: ID of the text-to-speech model to use. For example,
canopylabs/orpheus-v1-english. - Voice: The voice to use when generating the audio. For example,
troy. - Speed: The speed of the generated audio.
Composite
Most speech providers offer both speech-to-text and text-to-speech capabilities. The Composite provider type allows you to select one provider type for speech-to-text and a different type for text-to-speech.
Frontline Hero
To enable SYNQ Radio to work with Frontline Hero applications like Call for Help and Curbside:
- Sign into MyStore as Location Administrator.
- Select Configure Store from the sidebar.
- Scroll down to the Webhooks section.
- Provide the Webhook URL with your SYNQ Radio instance URL. For example,
https://synq-voice.lemonhill-4dfb2d3c.canadacentral.azurecontainerapps.io/webhooks/incoming/frontline-hero
- Provide a secret random value for the Webhook Secret.
- Check the desired checkboxes to enable sending webhook requests for the following applications:
- Call for Help
- Curbside
- Picking Utility/Order Up
- Click Update Location Settings at the bottom of the page.
- Select Manage Users from the sidebar and follow the instructions to create a service account and generate a Personal Access Token.
- Select Radio from the sidebar.
- Select Settings.
- Select the desired edge device.
- Click the ⋮ menu and select Edit.
- Select the Frontline Hero tab.
- Toggle on/off announcements for Call for Help.
- Optionally check the desired States to Announce.
- By default it announces when Call for Help requests are created, escalated, and cancelled.
- Optionally check the desired Repeat Alerts to Announce.
- By default no repeat alerts are announced.
- Optionally check the desired States to Announce.
- Toggle on/off announcements for Curbside.
- Optionally check the desired States to Announce.
- By default it announces when Curbside requests are created, and unreviewed.
- Optionally check the desired States to Announce.
- Toggle on/off announcements for Order Up.
- Order Up only announces when new Order Up orders are created.
- Enter the Personal Access Token from above as the User Access Token.
- Enter the Verification Token from above as the Webhook Validation Secret.
- Click Save.
Agents
SYNQ Radio can talk to a variety of off-the-shelf and custom agents. Agent configuration typically requires:
- Connection settings like a URL and API Key.
- Model setting that define what type of LLM model to use.
- Messages that represents prompts to to provide to LLM-based models.
To configure an agent:
- Select the Agents tab.
- Click the Add Agent button.
- Select the desired agent Type.
Azure OpenAIGenericOpenAIWatson
- Depending on the selected type different configuration settings apply.
- Azure OpenAI
- Name: The name of your agent.
- Aliases: Alternate names or name spellings of your agent.
- Endpoint: The Azure URL endpoint where your agent is hosted. For example
https://example-resource.azure.openai.com/ - API Key: The Azure OpenAI API Key.
- Deployment: The name of your Azure OpenAI deployment.
- Version: The API version to use when communicating with your agent. For example,
2024-10-21. - Model: The Model ID used to generate responses. For example,
gpt-4o-mini. - Click Add Message.
- Add messages that represent the system prompts for your agent.
- Generic
- Name: The name of your agent.
- Aliases: Alternate names or name spellings of your agent.
- Endpoint: The URL endpoint where your agent is hosted.
- Secret: The secret used to apply HMAC signatures to requests from SYNQ Radio to the agent endpoint.
- OpenAI
- Name: The name of your agent.
- Aliases: Alternate names or name spellings of your agent.
- Endpoint: The URL endpoint where your agent is hosted.
- API Key: The OpenAI API Key.
- Model: The Model ID used to generate responses. For example,
gpt-4o-mini. - Click Add Message.
- Add messages that represent the system prompts for your agent.
- Watson
- Name: The name of your agent.
- Service URL: The base URL for the Watson service where your Watson agent is hosted.
- Assistant ID: The ID of your Watson assistant.
- Environment ID: The environment ID of the environment where the assistant is deployed.
- Version: The API version date to use with the service, in "YYYY-MM-DD" format.
- Azure OpenAI
- Click the OK button on the dialog.
- Click the Save button on the form to commit your changes.
Implementing a Generic Agent
To implement a generic agent all you need is a service that accepts a POST to a /chat endpoint with the following application/json payload:
{
text: string, // The transcribed text from the user.
sessionId: string, // The current session ID if your agent supports multi-turn sessions, and session ID was provided on a previous turn.
edgeId: string // The ID of the edge device the request originated from.
}
The endpoint should provide an application/json response matching:
{
text: string, // The optional response text to real aloud over the radio.
sessionId: string // The optional session ID generated by your agent if it supports multi-turn conversations.
}
See Validate Signed Webhook Requests for details on how to validate the signature of the request.
The SYNQ Radio application can only make requests to services that support HTTPS and are exposed to the internet. For example, it can't make a request to an agent you are building in a development environment hosted on http://localhost:3000. You can use services like Ngrok, or cloudflared tunnel --url http://localhost:3000 to expose services in development publicly over HTTPS.
Push-to-talk
Integration with push-to-talk systems is managed via the Secondary Transports tab.
ESChat PTT
Connecting your SYNQ Radio to an ESChat PTT channel requires configuration of:
- An RTP Gateway in the ESChat Management Portal
- An SYNQ secondary transport that matches the ESChat RTP Gateway
The SYNQ Radio device communicates with the ESChat RTP Gateway via UDP. The SYNQ Radio device is typically able to initiate outbound connections to the gateway, but you will need to configure appropriate firewall rules and port forwarding so that the ESChat gateway can reach the device. You will also need to provide ESChat with a public IP address for the device.
To enable ESChat PTT:
- Select the General tab.
- Click the Check Status button.
- Note the active (bold) IP Address of the SYNQ Radio device.
note
This is often an internal IP address. You will need to provide ESChat with the public IP address of the device instead.
- Following ESCHat's RTP Gateway Setup documentation add and configure an RTP Gateway.
- Note the Assigned Server IP Address and Assigned Server UDP Port.
- Set the Remote IP Address to the IP Address of the SYNQ Radio device.
- Set the Remote UDP Port to the desired port you want to expose from the SYNQ Radio device. For example
45015. - Set the Internal Data Payload Format to
G.711, mu-Law.
- Select the Secondary Transports tab.
- Click the Add Transport button.
- Configure the following settings:
- Type:
RTP - ID: A unique ID to identify this RTP gateway.
- Remote Host: The remote ESChat Assigned Server IP Address.
- Remote Port: The remote ESChat Assigned Server UDP Port.
- Local Host: The local IP Address to listen for incoming RTP packets from the ESChat RTP Gateway. Optional: defaults to
0.0.0.0. Alternatively you can explicitly set it to match the active IP Address of the device. - Local Port: The local port to listen for incoming RTP packets from the ESChat RTP Gateway. Optional: defaults to
45015. - Encoder Codec:
PCMU (G.711 μ-law)
- Type:
- Click the OK button on the dialog.
- Click the Save button on the form to commit your changes.
- Click the ⋮ menu and select Restart Edge.
- Wait two minutes for the SBC and SYNQ Radio device to reload.
- Test communication between the radios and Zebra Workcloud Sync PTT users.
Zebra PTT
Connecting your SYNQ Radio to a Zebra Workcloud Sync PTT channel requires a Zebra Session Border Controller (SBC) appliance. The SBC securely relays audio between the two applications. Configuration of the SBC is covered by Zebra's documentation. At a high level it needs:
- A Zebra Workcloud Sync "group" that represents the PTT channel where communication between radios and Workcloud Sync users will happen.
- A Zebra Workcloud Sync "radio user" that is a member of that group. This is the Workcloud Sync user that the SYNQ Radio acts as.
- The IP Address and port of the of the SYNQ radio kit.
To enable Zebra PTT:
- Select the General tab.
- Click the Check Status button.
- Note the active (bold) IP Address of the SYNQ Radio device.
- Select the Secondary Transports tab.
- Click the Add Transport button.
- Configure the following settings:
- Type:
RTP - ID: A unique ID to identify this Zebra SBC.
- Remote Host: The remote IP Address of the Zebra SBC.
- Remote Port: The remote port of the Zebra SBC. Optional: defaults to
45015. - Local Host: The local IP Address to listen for incoming RTP packets from the Zebra SBC. Optional: defaults to
0.0.0.0. Alternatively you can explicitly set it to match the active IP Address of the device. - Local Port: The local port to listen for incoming RTP packets from the Zebra SBC. Optional: defaults to
45015. - Encoder Codec:
Opus
- Type:
- Click the OK button on the dialog.
- Click the Save button on the form to commit your changes.
- Following Zebra's documentation, update the SBC radio user configuration to use the IP Address of the SYNQ Radio device and the Local Port (or its default value of
45015). - Click the ⋮ menu and select Restart Edge.
- Wait two minutes for the SBC and SYNQ Radio device to reload.
- Test communication between the radios and Zebra Workcloud Sync PTT users.
Zello PTT
To enable Zello PTT:
- Select the Secondary Transports tab.
- Click the Add Transport button.
- Configure the following settings:
- Type:
Zello - Endpoint: The Zello API entry point. One of:
- Zello Friends and Family:
wss://zello.io/ws - Zello Work:
wss://zellowork.io/ws/<network-name> - Zello Enterprise Server:
wss://<your-server-domain>/ws/mesh
- Zello Friends and Family:
- Username: The username of the Zello user to logon with.
- Password: The password of the Zello user to logon with.
- Auth Token: The Zello API authentication token to authenticate with. This is an alternative to providing Username and Password that is only used with "Zello Friends and Family".
- Type:
- Click Add Channel
- Configure the following settings:
- ID: A unique ID to identify this channel.
- Channel Name: The name of the Zello channel to connect to.
- If desired, configure additional channels.
- Click the OK button on the dialog.
- Click the Save button on the form to commit your changes.
- Click the ⋮ menu and select Restart Edge.
- Wait two minutes for the SYNQ Radio device to reload.
- Test communication between the radios and Zello PTT users.
For more detail on Zello connection properties see the Zello Channel API specification.
PTT Wake Phrases
Conversations initiated from the PTT application in the radio channel are always delivered immediately to the radios. However, not all radio traffic warrants delivery to the same PTT channel. Wake phrases allow you to configure a required phrase, like "Call supervisor channel", to initiate the connection to the PTT channel.
To enable a wake phrase for a PTT channel:
- Select the Secondary Transports tab.
- Click the Edit button of the desired PTT transport.
- Configure the following settings:
- Wake Phrase: The phrase a radio user must say to initiate a call to the PTT application.
- Wake Response: The system's response to the wake phrase indicating that the PTT call can begin.
- Wake Timeout (ms): The time in milliseconds after the last transmission that radio-to-PTT calling will return to sleep mode.
Webhooks
Webhooks provide a way to deliver transcriptions to external applications. An external application could simply log the transcripts, or it could interpret what is said and make decisions and even API calls back to SYNQ radio.
To enable a webhook to send radio transcriptions to an external application:
- Select the Webhooks tab.
- Click Add Webhook.
- Specify the URL of webhook endpoint to send to.
- The URL must use
https://with a valid certificate and must be reachable from SYNQ's cloud hosted servers.
- The URL must use
- Specify a Secret value that will be used to cryptographically sign all webhook requests. Your application can use this same secret to verify that incoming webhook requests came from SYNQ Radio. See Validate Signed Webhook Requests for more details.
- Click Save.
- See Radio Webhooks API for more details on the webhook payload.