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 Edit button.
- The settings are now editable.
- Make the desired changes.
- Click the Save button to commit your changes.
Checking Device Status
The Check Status button sends a message to the edge device and displays the response. It is the most direct way to confirm that a device is online and reachable.
To check the status of a device:
- Select the Settings tab from the sidebar.
- Select the desired device.
- Select the General tab.
- Click the Check Status button.
The device reports:
- Version: The software version currently running on the edge device.
- MAC Address: The hardware address of the device's network interface.
- IP Address: The addresses assigned to the device. Where a device has more than one, the address currently in use is shown in bold.
If the device does not respond it is not reachable. See Troubleshooting.
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.
Audio Analysis
Audio Analysis is the most reliable way to tune volume levels. It shows you what SYNQ Radio actually heard, rather than leaving you to guess from the quality of the transcriptions.
When Audio Analysis is enabled, entries in the transcript view include an audio player and a waveform visualization of the captured audio. You can play back the capture, inspect its waveform, and download it as a .wav file.
To enable Audio Analysis:
- Sign into MyStore as a Location Administrator.
- Select Radio.
- Select the desired channel and date.
- Click the ⋮ menu and select Enable Audio Analysis.
Depending on your configured speech provider, captured audio is not necessarily a one-to-one match with transcript entries. A single capture may be split across several transcript entries, or a transcript entry may have no capture of its own.
Tuning the Volume
The rule of thumb is simple: if the audio sounds bad to you, the speech provider will have a hard time with it too.
- Enable Audio Analysis as described above.
- Speak a test phrase, such as "testing-testing 1-2-3", into a second radio.
- Find the new entry in the transcript view.
- The transcription may be correct, incorrect, or reported as "Inaudible".
- Play back the captured audio and look at its waveform.
- Good audio: speech is clearly audible, and the waveform has visible peaks and valleys that stay within the top and bottom of the display.
- Too quiet: speech is faint, and the waveform is a thin band near the centre line.
- Clipped: speech sounds harsh, muddy, or distorted, and the peaks of the waveform are squared off flat against the top and bottom of the display.
- If the audio is clipped, lower the volume on the donor radio a small amount.
- Repeat from step 2 until the audio sounds clean and the waveform is no longer flat-topped.
- Once the donor radio is no longer clipping, use Microphone Volume on the Audio tab to fine tune the level that the radio kit captures.
Always correct clipping at the donor radio first. Clipping most commonly happens before the radio kit receives the audio, so lowering Microphone Volume only produces quieter clipped audio.
Clipped audio is harder to transcribe than audio that is slightly too quiet. If you are unsure, err on the quieter side.
Audio Analysis turns itself off automatically after five minutes. If you need more time, enable it again from the ⋮ menu.
Setting the Language
The default language is English. Running SYNQ Radio in another language is a matter of setting the language in two places: the system language on the General tab, and the language settings of your speech provider on the Speech tab.
System Language
The system language controls the language of any messages that SYNQ Radio itself produces, such as a call button announcement.
To set the system language:
- Select the General tab.
- Select the desired Language.
- Click Save.
Speech Provider Language
The system language tells SYNQ Radio what to say. The speech provider settings tell the speech-to-text and text-to-speech services how to listen and how to speak. Each provider has its own flavour of configuration, but they all cover the same two things:
- Speech-to-text language: A hint to the transcription service about the language you expect to hear on the radio. Without it the service has to guess, and short radio transmissions rarely give it enough to guess well.
- Text-to-speech language and voice: The language, and a voice in that language, used for any message read aloud over the radio. The voice determines the accent and dialect of what staff hear, so choose one that matches your region.
To set the speech provider language:
- Select the Speech tab.
- Set the language settings for your selected provider Type:
- Azure: Set Language and choose a matching Voice Name.
- Azure OpenAI: Set Language for speech-to-text and choose a Voice Name for text-to-speech.
- Groq: Set Language for speech-to-text and choose a TTS Model and Voice that support your language.
- Composite: Set the speech-to-text language on the provider selected for speech-to-text, and the text-to-speech language and voice on the provider selected for text-to-speech.
- Click Save.
Set the language for both speech-to-text and text-to-speech even if your provider uses multilingual models. A multilingual model can recognize and speak many languages, but the language setting is still what tells it which one to expect on the radio and which accent and dialect to use when it responds.
Keep the system language and the speech provider language aligned. If the system language is French but the text-to-speech voice is English, French announcements are read aloud by an English voice.
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. Write the prompt in the same language as the configured Language. A prompt written in a different language can cause the service to transcribe in that language instead.
- 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 to the speech-to-text model. Write the prompt in the same language as the configured Language. A prompt written in a different language can cause the model to transcribe in that language instead.
- 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 Edit button.
- 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:
- Name that identifies the agent and acts as a wake word.
- 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.
Agent Configuration
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. - Session Timeout: The time in seconds that the agent remains active after it is awoken. Once awake, you can continue a conversation with the agent without saying the agent's name or alias each time you address it. The default is 30 seconds.
- 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.
MCP Servers
Azure OpenAI and OpenAI agents support extensibility with Model Context Protocol (MCP) servers.
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.
Code Words
Code Words define phrases that, when heard on the radio and transcribed, trigger an action. A code word can read a spoken response aloud over the radio, post a message to a Microsoft Teams channel, or both. For example, a code word named "Code Red" with the phrase "code red" could announce an acknowledgement over the radio and notify a Teams channel of the transcription that triggered it.
Code Word Configuration
To configure a code word:
- Select the Code Words tab.
- Click the Add Code Word button.
- Configure the following settings:
- Name: The name of the code word.
- Phrases: The phrases that trigger the code word. Type a phrase and press Enter to add it. Add as many phrases as you like, including alternate wordings and common mistranscriptions. Click the x on a phrase to remove it.
- Spoken Response: An optional message to read aloud over the radio when the code word is detected.
- Cancel Window: The number of seconds after a detection in which a radio user can speak a cancel phrase to cancel the action. Set to
0to disable cancellation, or select a value from5to30seconds.noteThe Cancel Phrases, Cancel Instructions, and Cancel Response settings only apply when the Cancel Window is greater than
0. When cancellation is disabled the action runs immediately after detection. - Cancel Phrases: The phrases a radio user speaks to cancel the code word action. Type a phrase and press Enter to add it.
- Cancel Instructions: Optional instructions, read aloud following the Spoken Response, that tell radio users what to say to cancel the action.
- Cancel Response: An optional message to read aloud over the radio when the action is cancelled.
- Completed Response: An optional message to read aloud over the radio once the code word action has completed.
- Teams Webhook URL: An optional URL of a Microsoft Teams incoming webhook. When specified, a message is posted to the Teams channel as the action following a code word detection. See Create an Incoming Webhook in the Microsoft Teams documentation for instructions on setting up a webhook for your channel.
- Teams Message: The formatted message to post to Microsoft Teams. The text you enter will be rendered as the text content of an adaptive card
TextBlock. Teams supports basic Markdown formatting, so you can use bold, italics, lists, and quotes to make the message easier to read. The message can also include a{{message}}token, which is replaced with the entire transcription that triggered the code word. For example, the following posts the name of the code word in bold, followed by the transcription that triggered it as a quote on its own line:__Code Red__ code word received by radio.>{{message}}
- Click the OK button on the dialog.
- Click the Save button on the form to commit your changes.
Push-to-talk
Integration with push-to-talk systems is managed via the Transports tab. A "transport" defines the connection to a secondary audio stream and the settings that control how your radio channel joins a channel on a PTT system.
ESChat PTT
Connecting your SYNQ Radio to an ESChat PTT channel requires configuration of:
- An RTP Gateway in the ESChat Management Portal
- A SYNQ 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 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 Audio.
- Wait two minutes for the SBC and SYNQ Radio device to reload.
- Test communication between the radios and Zebra Workcloud Sync PTT users.
Kenwood Boundless PTT
Follow ESChat PTT procedure.
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 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 Audio.
- 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 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 Audio.
- 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 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.