Deployment to Microsoft Hyper-V
To deploy the Phonexia Speech Platform 4 Virtual Appliance, you need these two
ZIP files, downloaded from Phonexia:
– Virtual Appliance ZIP file
– Licensed models ZIP file
Preparation: Operating system, networking, disks
Operating system
Hyper-V is available on Windows Desktop and Windows Server. However, only Windows Server supports GPU passthrough, via advanced virtualization features such as Discrete Device Assignment (DDA).
If a GPU compute acceleration inside the virtual appliance is required - like in the case of Enhanced Speech To Text Based on Whisper - a server version of Hyper-V must be used, with a properly configured DDA.
If a GPU capabilities inside the virtual appliance is not required, either Windows Desktop or Windows Server can be used, depending on your environment and licensing.
GPU Passthrough capable | |
---|---|
Hyper-V on Windows Server 2019, 2022, 2025 | ✅ |
Hyper-V Server 2019 | ✅ |
Hyper-V on Windows 10, 11 | ❌ |
Networking
Hyper-V implements the concept of software Virtual Switches, which work just
like physical switches.
There are three main types of Virtual Switches: private, internal and external.
Additionally, there is a Default Switch, which is a special kind of internal
switch with additional basic NAT-based internet connectivity to virtual machines
without requiring manual configuration.
For Speech Platform Virtual Appliance, we recommend creating External
switch. This should save you from a hassle with additional port forwarding
rules configuration for accessing the virtual appliance from your internal
network.
Virtual switch can be created in the Virtual Switch Manager, accessible in
the Hyper-V Manager from your server context menu or from the Actions
pane.
The following table shows an overview of switch types and the type of networking provided by each switch type.
Switch type | VM to Host | VM to VM | VM to Internet | LAN Access |
---|---|---|---|---|
Private | ❌ | ✅ | ❌ | ❌ |
Internal | ✅ | ✅ | ❌ | ❌ |
External | ✅ | ✅ | ✅ | ✅ |
Default | ✅ | ✅ | ✅ via NAT | ❌ |
Disks conversion
Before deploying Virtual Appliance to Hyper-V it is necessary to convert the provided virtual disks from VMWare VMDK format to Microsoft VHDX format.
The preferred tool is Starwind V2V Converter, another option is Microsoft Virtual Machine Converter.
- StarWind V2V Converter (preferred)
- Microsoft Virtual Machine Converter
-
Download StartWind V2V Converter installer (release notes) and install it
-
Convert both provided VMDK disks to VHDX (i.e., do the following for each VMDK)
-
either using the GUI by following this guide (make sure to select "VHDX growable image" as target image format)
-
or using command line:
"C:\Program Files\StarWind Software\StarWind V2V Converter\V2V_ConverterConsole.exe" convert in_file_name="path\to\source\file.vmdk" out_file_name="path\to\converted\file.vhdx" out_file_type=ft_vhdx_growable
Ideally, select the target VHDX file location where your Hyper-V virtual disks are stored (by default it is
C:\ProgramData\Microsoft\Windows\Virtual Hard Disks\
on the Hyper-V machine).
If this is not possible during the conversion, select any suitable target location and move the created VHDX files to the final destination later, before creating the actual virtual machine. -
-
Download Microsoft Virtual Machine Converter installer and install it.
-
Open PowerShell console as administrator and type in the following commands:
-
Import the PowerShell module
Import-Module 'C:\Program Files\Microsoft Virtual Machine Converter\MvmcCmdlet.psd1'
-
Convert both provided VMDK disks (i.e., run the command for each VMDK).
ConvertTo-MvmcVirtualHardDisk -SourceLiteralPath "path\to\source\file.vmdk" -VhdType DynamicHardDisk -VhdFormat vhdx -DestinationLiteralPath "path\to\converted\file.vhdx"
Ideally, select the Hyper-V virtual disks storage as destination file location (by default it is
C:\ProgramData\Microsoft\Windows\Virtual Hard Disks\
on the Hyper-V machine).
If this is not possible during the conversion, select any suitable location; this can be handled later during the virtual appliance creation. -
Step 1: Create Virtual Appliance
- Manually (preferred)
- Using helper tool
- Make sure to have the virtual switch created (see above).
- Start creating a new virtual machine. This opens the New Virtual Machine Wizard.
- In the Specify Name and Location section, enter the name of the virtual machine and optionally select specific location for storing the virtual machine files.
- In the Specify Generation section, set Generation 2.
- In the Assign Memory section, assign at least 32768 MB and make sure that the Use Dynamic Memory for this virtual machine check box is cleared (this is required specifically for GPU passthrough).
- In the Configure Networking section, select the virtual switch you have prepared previously.
- In the Connect Virtual Hard Disk section, select the Use an existing
virtual hard disk option and select the first converted VHDX file
speech-platform-disk001.vhdx
.
The second disk needs to be connected after creating the virtual machine. - Proceed to the Summary section, verify the configuration and finish creating the virtual machine.
After importing the virtual machine to Hyper-V, it's necessary to further change some of its parameters.
Right-click on the machine in the list and select Settings... to open the setting dialog.
- In the Security section, clear the Enable secure boot check box.
- In the Processor section, make sure that Number of virtual processors is at least 4.
- In the SCSI Controller section (where the first connected disk is
already listed), select "Hard Drive" from the list and click on Add
button. Then select the newly added "Hard Drive" item, select the Virtual
hard disk option and then select the second converted VHDX disk
speech-platform-disk002.vhdx
.
Additional changes are required for GPU Passthrough:
- In the Checkpoints section, clear the Enable checkpoints check box.
- In the Automatic Stop Action, select the Turn off the virtual machine option.
Click OK to save the settings.
If GPU Passthrough is required, continue with the following section. Otherwise,
the virtual machine is ready to run!
GPU passthrough configuration
For the Virtual Appliance to use your machine's GPU, a Windows Server feature called Discreet Device Assignment (DDA) needs to be enabled.
Prepare virtual machine
Before setting up the GPU passthrough itself, make sure that the corresponding virtual machine settings are properly set according to the instructions above:
- the Dynamic Memory must be disabled
- the Checkpoints must be disabled
- the Automatic Stop action must be set to Turn off the virtual machine
Configure Discrete Device Assignment
To configure Discrete Device Assignment (DDA), open a PowerShell session with administrator privileges.
- Set cache limits for Memory Mapped IO space, which is required for the CPU to
communicate with the device. For most nvidia GPUs the HighMemoryMappedIoSpace
parameter can be set to 33280Mb. However, if your VM crashes after completing
this guide, try increasing this value.
Set-VM -Name VMName -GuestControlledCacheTypes $True -LowMemoryMappedIoSpace 3Gb -HighMemoryMappedIoSpace 33280Mb
- Identify the device ID and location of your GPU using these commands:
Get-PnpDevice | Where-Object {$_.Present -eq $true} | Where-Object {$_.Class -eq "Display"}|select Name,InstanceId
Once you see the output of these commands, indentify the target GPU.Get-PnpDevice -Class Display | Where-Object {$_.Present -eq $true} | ForEach-Object { Write-Output "$($_.FriendlyName) has a device id of $($_.DeviceId) and is located at $($_ | Get-PnpDeviceProperty DEVPKEY_Device_LocationPaths | Select-Object -ExpandProperty Data | Where-Object { $_ -like "PCIROOT*" })"; }
- The device must be disabled in the host system using the following command:
Instance ID is returned by the first command from the previous step, so please fill it into this command.
Disable-PnpDevice -InstanceId "<Instance-ID>" -Confirm:$false
- Now it's time to detach the device from the host system. To do this, you will
need PCIe device location, which can be found at the end of line
corresponding to your GPU in the output of the second command from step 2.
Once you have this location, enter it into the following command:
Dismount-VmHostAssignableDevice -LocationPath "<Device-Location>" -Force
- Last step is to attach the dismounted device to your VM using the following
command:
Add-VMAssignableDevice -VMName <VM-Name> -LocationPath "<Device-Location>"
Now power on the VM and after boot is finished, log in. To verify the GPU is
functional, enter the command nvidia-smi
. If you see your GPU in the output,
the passthrough was successful.
A simple deployment helper tool is provided for a "single click" installation.
To use this helper, you need the two ZIP files, downloaded from Phonexia:
– Virtual Appliance ZIP file
– Licensed models ZIP file
and also need to have the Microsoft Virtual Machine Converter installed on your
machine - see the section above for download link - as it is used for automatic
comnversion of the virtual disk from VMDK to VHDX format.
DISCLAIMER: The helper is provided as-is and is not guaranteed to work
perfectly and/or in all environments.
Manual deployment is strongly recommended for a proper control over all import
steps and parameters.
- Run the
SpeechPlatformInstaller.exe
. - In the displayed dialog:
- fill the Virtual Machine name
- select Hyper-V from the Hypervisor drop down
- select path to the virtual appliance ZIP file
- select path to the licensed models ZIP file
- Click on the Install button.
A new window will pop up and show the installation process.
After the installation is complete you can access speech platform at
http://localhost:1080/app/home
Step 2: Run Virtual Appliance
After you have imported and configured the setting of the virtual appliance, you can finally start it.
The console displays the boot log with various messages as startup tasks are completed. This typically takes several minutes.
When the system is fully up and running, the console shows a screen similar to this:
Rocky Linux 9.5 (Blue Onyx)
Kernel 5.14.0-503.14.1.e19_5-x86_64 on an x86_64
Welcome to Phonexia Speech Platform 3.7.0
.
.
.
speech-platform login:
Step 3: Upload licensed models and configure the platform
The virtual appliance distribution contains only the bare Speech Platform system. To actually breathe life into the system it's necessary to upload the licensed models to the appliance and configure the technologies.
These steps can be done either semi-automatically via the platform GUI, or manually via SSH access to the platform console.
- GUI (preferred)
- Console
The Virtual Appliance contains a Filebrowser tool, which simplifies some
management tasks like uploading the models and accessing and editing the
appliance configuration files.
The Filebrowser is accessible at
http://<virtual appliance IP address>/filebrowser
.
Open the Filebrowser and click on the upload icon in the top right corner, then
click on the "File" option, browse for the licensed models ZIP file
(licensed-models.zip
). A small pop-up window in the bottom right corner will
show the upload progress. You can also click on the up arrow to show the
graphical progress bar.
When the upload is finished (progress is at 100 %), Filebrowser automatically starts extracting the uploaded ZIP file and then runs the automatic configuration script. While these processes are executed, the upload progress pop-up stays shown with the progress stuck at 100 %, seemingly doing nothing - don't worry, this is a sign of the background tasks still in progress.
When the the progress pop-up disappears, it means that the extraction and configuration is finished and the system is ready for use.
The automatic configuration detects which models and licenses were extracted from the ZIP file and automatically turns on the corresponding technologies and configures them to use the provided models, and also detects the hardware — if a GPU is present, it enables GPU processing.
Upload the licensed models to the appliance and configure the technologies from
the command line terminal using the following steps.
Use the default password InVoiceWeTrust
when asked.
- Upload the licensed models ZIP file from your host/client computer to the
virtual appliance via scp
(default SSH port is22
when using bridged networking, or usually2222
when using NAT):scp -P <virtual-appliance-port> licensed-models.zip root@<virtual-appliance-ip>:/data/
- Connect to the virtual appliance via SSH and change directory to
/data
:ssh root@<virtual-appliance-ip> -p <virtual-appliance-port>
cd /data - Extract the licensed models ZIP file. The included directory structure
ensures that all files are extracted to their proper locations.
unzip licensed-models.zip
- Finally, run the automatic configuration script:
/root/scripts/configure-speech-platform.sh --auto-configure
The automatic configuration detects which models and licenses were extracted from the ZIP file and automatically turns on the corresponding technologies and configures them to use the provided models, and also detects the hardware — if a GPU is present, it enables GPU processing._
After the configuration script finishes, depending on the provided technologies and models it may take up to several minutes to load the new configuration.