Skip to main content
Version: 4.0.0-rc1

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 typeVM to HostVM to VMVM to InternetLAN 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.

  1. Download StartWind V2V Converter installer (release notes) and install it

  2. 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.

Step 1: Create Virtual Appliance
  1. Make sure to have the virtual switch created (see above).
  2. Start creating a new virtual machine. This opens the New Virtual Machine Wizard.
  3. 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.
  4. In the Specify Generation section, set Generation 2.
  5. 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).
  6. In the Configure Networking section, select the virtual switch you have prepared previously.
  7. 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.
  8. 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.

  1. In the Security section, clear the Enable secure boot check box.
  2. In the Processor section, make sure that Number of virtual processors is at least 4.
  3. 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:

  1. In the Checkpoints section, clear the Enable checkpoints check box.
  2. 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.

  1. 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
  2. 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
    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*" })"; }
    Once you see the output of these commands, indentify the target GPU.
  3. The device must be disabled in the host system using the following command:
    Disable-PnpDevice -InstanceId "<Instance-ID>" -Confirm:$false
    Instance ID is returned by the first command from the previous step, so please fill it into this command.
  4. 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
  5. 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.

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.

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.