XMOS XVF3800 User manual

XMOS XVF3800 - User Guide
Release: 2.0.0
Publication Date: 2023/07/03

Table of Contents
1 Overview 1
2 Setting Up the Hardware 2
2.1 Introduction ................................................ 2
2.2 Hardware Setup - USB (UA) Configuration) ............................... 2
2.2.1 UA - Required Components ................................... 2
2.2.2 Setting up the Evaluation System in UA Configuration .................... 2
2.2.3 Installing the UA firmware .................................... 3
2.3 Hardware Setup - I2S (INTDEV) Configuration ............................. 4
2.3.1 INTDEV Required Components ................................. 4
2.3.2 Setting up the INTDEV configuration .............................. 5
2.3.3 Installing the INTDEV Firmware ................................. 6
2.4 Setting up the Audio ........................................... 7
2.4.1 Loudspeaker ........................................... 7
2.4.2 Playback and Recording ..................................... 8
2.4.2.1 I2S Audio Configuration ............................... 8
2.4.2.2 UA Audio Configuration ................................ 9
2.5 Troubleshooting .............................................. 9
2.5.1 Audio Signals ........................................... 9
2.5.2 AEC Convergence ........................................ 9
3 Using the Host Application 11
3.1 Installing the Host Application ...................................... 11
3.2 Connecting to the XVF3800 Device ................................... 13
3.3 xvf_host Command Syntax ....................................... 13
3.4 Microphone orientation .......................................... 13
3.4.1 Beam forming subsystem and Direction of Arrival indicator ................ 15
3.4.2 Using azimuth data For Direction of Arrival indication .................... 16
3.5 Example Uses ............................................... 16
3.5.1 Output Selection ......................................... 16
3.5.2 Setting an Output Pin ...................................... 18
4 Tuning the Application 20
4.1 System Preparation ............................................ 20
4.1.1 Prerequisites ........................................... 20
4.1.2 Initial Parameter Setting ..................................... 21
4.1.3 Initial Tests ............................................ 22
4.1.3.1 Input Path ....................................... 22
4.1.3.2 Control Path ...................................... 23
4.1.3.3 Output Path ...................................... 24
4.1.3.4 Speaker Operation ................................... 24
4.1.3.5 Microphone Operation ................................ 24
4.2 Tuning the XVF3800 Parameters .................................... 25
4.2.1 Reference Gain .......................................... 25
4.2.2 Microphone Gain ......................................... 26
4.2.3 System Delay ........................................... 26
4.2.4 AEC Operation .......................................... 28
4.2.5 AGC Configuration ........................................ 29
4.2.6 Emphasis ............................................. 30
4.2.7 Additional Parameters ...................................... 31
4.2.7.1 FMIN_SPEINDEX ................................... 31
4.2.7.2 MGSCALE ....................................... 32
iiiiii

4.2.8 Tuning the Non Linear Model .................................. 33
4.2.8.1 Non-linear Echo .................................... 33
4.2.8.2 Tuning Setup for Non Linear model ......................... 33
4.2.8.3 Echo Suppression ................................... 35
4.2.8.4 Noise Suppression .................................. 36
4.2.8.5 ATTNS ......................................... 37
4.2.8.6 Path Change Detection ................................ 38
4.3 Changing Default Parameter Values .................................. 38
5 Building the Application Firmware 42
5.1 Introduction ................................................ 42
5.2 Prerequisites ................................................ 42
5.2.1 Python3 .............................................. 42
5.2.2 XMOS tools ............................................ 42
5.2.3 Build Tools ............................................. 42
5.3 XVF3800 Release Package ....................................... 43
5.3.1 Standard Configurations ..................................... 43
5.3.2 Image Names ........................................... 44
5.4 Build Process ............................................... 44
5.4.1 Set up the environment ..................................... 45
5.4.2 Configure the build system ................................... 45
5.4.3 Build an executable ........................................ 45
5.5 Installing the Executable Image ..................................... 46
5.5.1 Install Using xrun ......................................... 46
5.5.2 Install Using xflash ........................................ 46
5.6 Using SPI Boot ............................................... 46
5.6.1 Creating a SPI Boot File ..................................... 46
5.6.2 Using a SPI Boot File ....................................... 47
6 Some Acoustic Design Guidelines 48
6.1 Microphones ................................................ 48
6.2 Loudspeaker(s) .............................................. 50
6.3 Enclosure and mounting ......................................... 51
7 DFU operations (UA only) 52
7.1 Setting up the host machine ....................................... 52
7.2 Generation of Binary Upgrade Image .................................. 53
7.3 Examples of DFU operations ....................................... 54
7.3.1 Download an upgrade image to the device .......................... 54
7.3.2 Revert the device to factory image ............................... 54
7.3.3 Reboot the device ........................................ 55
7.3.4 Upload the images from the device .............................. 55
8 APPENDIX – Control Commands 56
8.1 AEC Tuning and Control Commands .................................. 56
8.2 Device Metadata Commands ...................................... 60
8.3 Audio Manager Commands ....................................... 61
8.4 GPIO Commands ............................................. 63
iiiiiiiii

1 Overview
The XMOS VocalFusion ®XVF3800 is a high-performance voice processor that uses microphone array pro-
cessing and a sophisticated audio processing pipeline to capture clear, high-quality speech from anywhere in
a room. The XVF3800 uses the XMOS xcore.ai processor and supports a range of integrated and accessory
voice communication applications.
This document discusses:
•Setting up the hardware,
•Using the Host application,
•Tuning the XVF3800 firmware,
•Building and deploying an XVF3800 executable image,
•Some acoustic design guidelines, and
•Tools for device firmware upgrade (DFU).
It also includes a list of control commands in an appendix.
111

2 Setting Up the Hardware
2.1 Introduction
This section explains the process of setting up and configuring the XVF3800 firmware on an XK-VOICE-SQ66
development kit.
Version v2.0.0 of the XVF3800 firmware supports audio I/O via I2S or USB UAC2. The instructions below
describe how to set up an evaluation system in either configuration.
Note: The XK-VOICE-SQ66 development kit is intended for use as an evaluation board for the XVF3800 and
after power on or reset the device will stop processing audio after 8 hours of continuous use. The board
must be restarted after 8 hours to resume operation. Licensed production XVF3800 devices do not have this
restriction.
2.2 Hardware Setup - USB (UA) Configuration)
The
UA
configuration is the simplest configuration as the XK-VOICE-SQ66 development kit can be connected
directly to a computer using a USB port.
2.2.1 UA - Required Components
•An XK-VOICE-SQ66 development kit board.
•An XMOS XTAG4 with associated ribbon cables (Provided in the XK-VOICE-SQ66 development kit pack-
age).
•A setup or development machine (Windows, Mac OS or Linux are supported). This machine must have
at least two USB connections.
•A micro USB cable to connect the setup machine to the XTAG4 and a second micro USB cable to connect
the XK-VOICE-SQ66 development kit to the development machine.
2.2.2 Setting up the Evaluation System in UA Configuration
The following steps are required to set up the XVF3800 evaluation hardware:
1. On the development computer, install the latest available XTC Tools, available from https://www.xmos.
ai/software-tools/. Installation instructions for the supported platforms are available at https://www.
xmos.ai/view/Tools-15-Documentation.
2. Connect the USB port on the XK-VOICE-SQ66 development kit to the development computer using a
USB cable. (This provides power to the device.)
3. Connect an XTAG-4 debug adapter to the setup computer via USB, and connect it to the XK-VOICE-SQ66
development kit using the supplied ribbon cable. The cable should be plugged into XSYS2 connector on
the XK-VOICE-SQ66 development kit. Fig. 2.1 below shows the UA configuration of the XK-VOICE-SQ66
development kit
222

XMOS XVF3800 - User GuideXMOS XVF3800 - User GuideXMOS XVF3800 - User Guide
Fig. 2.1: XK-VOICE-SQ66 development kit in UA configuration
4. Open an XTC tools terminal window on the development computer. Verify that the XTAG4 has been
correctly connected by running the following command in that window
xflash -l
The output from this should be of the following form:
Available XMOS Devices
----------------------
ID Name Adapter ID Devices
-- ---- ---------- -------
0XMOS XTAG-4 ABCDE123 P[0]
Note: If the XTAG-4 is not properly connected to the development machine, then
xflash
will report
No
Available Devices Found
. If the XK-VOICE-SQ66 development kit is not properly connected to the XTAG-
4, then the Devices column will read
None
. For further guidance on the use of the XTC tools, see the
https://www.xmos.ai/view/Tools-15-Documentation.
2.2.3 Installing the UA firmware
The XVF3800 firmware release package provided contains several precompiled binaries.
The provided binary images have names in the format:
application_xvf3800_ua[configuration-options].xe
where the [configuration-options] is constructed as detailed in Table 2.2 below.
333

XMOS XVF3800 - User GuideXMOS XVF3800 - User GuideXMOS XVF3800 - User Guide
Table 2.1: Build configuration settings
Option Values Description
I2S Sample rate -lr16 / -lr48 to choose between a 16 kHz or 48 kHz I2S LR clock (and there-
fore reference input and processed output audio sample rate).
This setting is only used in INT configurations
USB sample rate -io16 / -io48 to choose between a 16 kHz or 48 kHz rate for the USB rate.
Input and output rates must be the same. This setting is only
used in UA configurations
Microphone topol-
ogy
-sqr / -lin to choose between a “squarecular” or linear microphone array
Control protocol -i2c / -spi to choose between I2C and SPI control modes. This setting is
only used in INT configurations, the UA configurations always
use USB control mode
Audio MCLK -extmclk to choose between external or internal MCLK. This setting is
only used in INT configurations
Select the required binary firmware image from the release package, and transfer it to the XK-VOICE-SQ66
development kit using the
xflash
tool.
xflash application_xvf3800_ua[...].xe
The XTAG4 adapter can be disconnected from the XK-VOICE-SQ66 development kit after successfully in-
stalling the firmware image if desired.
After completing the initial setup, follow the instructions in the section Setting up the Audio below.
2.3 Hardware Setup - I2S (INTDEV) Configuration
The following instructions explain how to set up a Raspberry Pi computer with the XK-VOICE-SQ66 devel-
opment kit in order to evaluate the operation of the XVF3800 using an I2S audio interface in the
intdev
configuration.
2.3.1 INTDEV Required Components
•An XK-VOICE-SQ66 development kit board.
•An XMOS XTAG4 with associated ribbon cables (Provided in the XK-VOICE-SQ66 development kit pack-
age).
•A setup or development machine (Windows, Mac OS or Linux are supported). This must support USB
connections and have the ability to write onto SD memory cards.
•A USB cable to connect the setup machine to the XTAG4.
•A Raspberry Pi microcomputer; either a Raspberry Pi 3 Model B or 4 Model B will work for this evaluation.
See https://www.raspberrypi.com/ for more information.
•A region-appropriate USB power supply is also required. The XK-VOICE-SQ66 development kit obtains
its power supply from the Raspberry Pi.
•An SD memory card - minimum 8GB size
•A stacking header block, such as pictured in Fig. 2.2 to mount the XK-VOICE-SQ66 development kit board
onto the Raspberry Pi using the standard 40 pin GPIO header. A suitable part is Toby REF-182668-01 .
444

XMOS XVF3800 - User GuideXMOS XVF3800 - User GuideXMOS XVF3800 - User Guide
Fig. 2.2: Raspberry Pi HAT Connector - 10 mm Extended Tail Socket
•The XVF3800 evaluation firmware binary release package (available from https://xmos.ai or via an
XMOS representative).
2.3.2 Setting up the INTDEV configuration
The following steps are required to set up the XVF3800 evaluation hardware:
1. On the setup machine, install the latest available XTC Tools, available from https://www.xmos.ai/
software-tools/. Installation instructions for the supported platforms are available at https://www.
xmos.ai/view/Tools-15-Documentation.
2. On the setup machine, install and run the Raspberry Pi Imager, available from https://www.raspberrypi.
com/software
3. Using the Raspberry Pi imager, copy the latest available 32 bit version of the Raspberry Pi OS onto an
SD card.
4. Insert the programmed SD card into the Raspberry Pi. Attach any required peripherals (keyboard, mouse,
monitor), connect the power supply and follow the setup prompts, but skip the option to update the
operating system software.
5. Once the Pi has booted, open a terminal window and download the
vocalfusion-rpi-setup
utility from
https://github.com/xmos/vocalfusion-rpi-setup which should be saved in a convenient directory on the
Raspberry Pi. The following commands will setup the Raspberry Pi for use with the XK-VOICE-SQ66
development kit:
git clone https://github.com/xmos/vocalfusion-rpi-setup
cd vocalfusion-rpi-setup
./setup.sh xvf3800-intdev
To enable a remote GUI access on the Raspberry Pi, the VNC service should be enabled at this point
with the following command.
sudo raspi-config
Select
3 Interfaces Options
and enable VNC and SSH (if not already set using the imager) on the
next screen.
6. Shutdown the Pi, detach the power and mount the XK-VOICE-SQ66 development kit board onto the
Raspberry Pi header. After mounting the board, reattach power and verify the Raspberry Pi restarts.
The evaluation hardware is now ready to use, and should resemble Fig. 2.3.
555

XMOS XVF3800 - User GuideXMOS XVF3800 - User GuideXMOS XVF3800 - User Guide
Fig. 2.3: XVF3800 evaluation kit
2.3.3 Installing the INTDEV Firmware
The XVF3800 firmware release package provided contains several precompiled binaries.
The provided binary images have names in the format:
application_xvf3800_[device-configurations][configuration-options].xe
where the [device-configurations] can be intdev or ua where the [configuration-options] is constructed as de-
tailed in Table 2.2 below.
Table 2.2: Build configuration settings
Option Values Description
I2S Sample rate -lr16 / -lr48 to choose between a 16 kHz or 48 kHz I2S LR clock (and there-
fore reference input and processed output audio sample rate).
This setting is only used in INT configurations
USB sample rate -io16 / -io48 to choose between a 16 kHz or 48 kHz rate for the USB rate.
Input and output rates must be the same. This setting is only
used in UA configurations
Microphone topol-
ogy
-sqr / -lin to choose between a “squarecular” or linear microphone array
Control protocol -i2c / -spi to choose between I2C and SPI control modes. This setting is
only used in INT configurations, the UA configurations always
use USB control mode
Audio MCLK -extmclk to choose between external or internal MCLK. This setting is
only used in INT configurations
Note: Some binaries are provided which have the suffix
-extmclk
. These are intended for use in systems
where an external MCLK is provided, and they disable the XVF3800’s clock recovery system. These builds are
not for use with a Raspberry Pi.
The firmware is installed using the XMOS XTAG4 adapter supplied with the XK-VOICE-SQ66 development kit.
1. Connect an XTAG-4 debug adapter to the setup computer via USB, and connect it to the XK-VOICE-SQ66
development kit using the supplied ribbon cable. The cable should be plugged into XSYS2 connector
on the XK-VOICE-SQ66 development kit.
2. Open an XTC tools terminal window on the computer. Verify that the XTAG4 has been correctly con-
nected by running the following command in that window:
666

XMOS XVF3800 - User GuideXMOS XVF3800 - User GuideXMOS XVF3800 - User Guide
xflash -l
The output from this should be of the following form:
Available XMOS Devices
----------------------
ID Name Adapter ID Devices
-- ---- ---------- -------
0XMOS XTAG-4 ABCDE123 P[0]
Note: If the XTAG-4 is not properly connected to the development machine, then
xflash
will
report
No Available Devices Found
. If the XK-VOICE-SQ66 development kit is not properly
connected to the XTAG-4, then the Devices column will read
None
. For further guidance on
the use of the XTC tools, see the https://www.xmos.ai/view/Tools-15-Documentation.
3. Select the required binary firmware image from the release package, and transfer it to the XK-VOICE-
SQ66 development kit using the
xflash
tool.
xflash application_xvf3800_intdev[...].xe
The XTAG4 adapter can be disconnected from the XK-VOICE-SQ66 development kit after successfully in-
stalling the firmware image if desired.
After completing the setup, follow the instructions below to set up the audio path.
2.4 Setting up the Audio
2.4.1 Loudspeaker
To play reference audio into the room, a high quality loudspeaker operating in its linear region is required.
Connect the loudspeaker to the LINE OUT port on the XK-VOICE-SQ66 development kit, which accepts a 3.5
mm TRS jack plug connector. It is important for the ideal demonstration that the position, orientation, and
volume of the loudspeaker are representative of a real-world system.
To achieve optimal performance:
•Align the front of the loudspeaker with the microphone strip at the top of the XK-VOICE-SQ66 develop-
ment kit and
•Place the loudspeaker 2-4 cm away from the device
An example layout can be seen pictured in Fig. 2.4.
777

XMOS XVF3800 - User GuideXMOS XVF3800 - User GuideXMOS XVF3800 - User Guide
Fig. 2.4: XVF3800 demo example layout
To calibrate the volume of the loudspeaker for optimal performance, a test file such as the IEEE 269-2010
Male Mono 48 kHz signal can be used.
These test signals can be downloaded from:
https://standards.ieee.org/wp-content/uploads/import/download/269-2010_downloads.zip
and stored on the computer used for playback (USB host or I2S host). If the Raspberry Pi is connected to the
internet the files can be copied with the following:
curl --output <FILE>.zip https://standards.ieee.org/wp-content/uploads/import/download/
˓→
269-2010_downloads.zip
unzip <FILE>.zip
The output volume must be changed directly on the loudspeaker or on a connected amplifier, not on the
computer. The volume of the track measured at a 1 metre distance from the loudspeaker should be 73 dBA±2
dBAon average.
2.4.2 Playback and Recording
2.4.2.1 I2S Audio Configuration
Playback and recording through the XVF3800’s I2S interface, once the Raspberry Pi has been set up correctly,
can be achieved through standard use of the ALSA card
snd_rpi_simple_card, device 0
. For example,
from the command line, a 2 channel 32-bit 48 kHz WAV file may be played as reference audio through
aplay
with the following command:
aplay -c 2-f S32_LE -r 48000 -D hw:sndrpisimplecar,0 <filename>
Similarly, the returned processed audio from the XVF3800 may be recorded to a file with
arecord --mmap -c 2-d <time> -f S32_LE -r 48000 -D hw:sndrpisimplecar,0 <filename>
Alternatively, in a desktop environment on the Raspberry Pi, Audacity TM may be used to visually play and
record. The sample rate must be set to match the XVF3800 in the Project Rate (Hz) selection in the bottom
left.
The sound card settings must match the ones highlighted in Fig. 2.5:
888

XMOS XVF3800 - User GuideXMOS XVF3800 - User GuideXMOS XVF3800 - User Guide
Fig. 2.5: Audacity TM example
2.4.2.2 UA Audio Configuration
In the UA configuration, Audacity TM may be used to visually play and record signals from the device. The
sample rate must be set to match the XVF3800 in the Project Rate (Hz) selection in the bottom left.
The device should appear as a USB sound card with the default name of
XMOS |project| Voice Processor
.
On Audacity both playback and recording devices should be set to be the XVF3800.
With the standard evaluation firmware the USB parameters are:
Product_STR: XMOS XVF3800 Voice Processor
Manufacturer_STR: XMOS
Vendor_ID (VID): 0x20b1
Product_ID (PID): 0x4f00
Serial Number: 00000000
These can be modified, along with other USB parameters - see the subsection about Changing Default Pa-
rameter Values, for details.
2.5 Troubleshooting
2.5.1 Audio Signals
If audio is being played by the host but not heard from the loudspeaker, it is likely that there exists a connection
issue between the host and the XK-VOICE-SQ66 development kit board. Ensure that the XK-VOICE-SQ66
development kit board is powered, and the loudspeaker connected and powered.
If audio is heard from the loudspeaker but no input audio is received by the host, ensure that the host is
configured to transmit and receive audio at the correct sample rate (either 16 kHz or 48 kHz, depending on
the chosen firmware).
If there is still no input from the device, it is possible that the device firmware has stalled; disconnect and
reconnect power to the XK-VOICE-SQ66 development kit to reset the device, and then attempt input again.
2.5.2 AEC Convergence
The AEC requires a reference signal be present in order to converge on a room transfer function estimate
- this process will take a few seconds after reference audio has begun being provided. If the AEC has not
been allowed to converge, the XVF3800 will tend to over-suppress near-end speech in its output to avoid
undesirable artefacts being relayed to the far-end. This effect does subside within the first few seconds of
use, so if the device is unexpectedly restarted then performance will be reduced momentarily but should
restore over time.
If the device has consistently poor acoustic performance, it is likely that the AEC has not converged appro-
priately; restart the device and repeat the AEC convergence procedure described in the later sections to reset
the AEC to a new set of coefficients.
999

XMOS XVF3800 - User GuideXMOS XVF3800 - User GuideXMOS XVF3800 - User Guide
If this does not resolve the issues, it is permissible to lower the loudspeaker volume. If loudspeaker volume
is adjusted, or if there is any other change in environment, ensure that the AEC has reconverged before pro-
ceeding by playing several seconds of far-end audio again. The AEC will constantly reconverge, so a small
change in environment such as a window opening or a change in loudspeaker volume should be automati-
cally adjusted for by the AEC; however, actions that alter the direct delay path significantly, such as moving
the loudspeaker, will require the device be reset and the AEC be allowed a few seconds to reconverge from
startup.
101010

3 Using the Host Application
The XVF3800 contains a control interface that enables users to configure the operation of the device and to
set and read parameter data.
In 2.0 a sample host application,
xvf_host
(Linux, MacOS, Raspberry Pi OS) or
xvf_host.exe
(Windows), is
provided which can be used to connect to the control interface on the XVF3800. Please contact XMOS for
information on using these tools on other host platforms.
Before using the host application, the host and hardware must be configured as described in Setting up the
hardware.
3.1 Installing the Host Application
The sample
xvf_host(.exe)
application can be found in the evaluation binaries release package in the sub-
folder
host_v<version>/<platform>
. The supported platforms are
linux_x86
,
mac_x86
,
rpi
,
windows
. This
whole folder needs to be transferred to the host machine. It can be placed in any convenient location. This
directory should contain the following files:
.(lib)command_map.(so/dll/dylib) # All platforms
libdevice_i2c.so # RPi only
libdevice_spi.so # RPi only
(lib)device_usb.(so/dll/dylib) # All platforms
libusb-1.0.0.dylib # Mac_x86 only
xvf_host(.exe) # All platforms
To verify the
xvf_host(.exe)
application is installed, change to the directory and run the application as per
the example below, setting the appropriate permissions first.
chmod +x xvf_host(.exe)
xvf_host(.exe) --help
Users may find it convenient to store the host tools in a directory such as
~/bin
and add this to the $PATH
environment variable so that the tools can be invoked from any directory, for example with the shell command
PATH=~/bin:$PATH
or use “Edit system environment variables” GUI on Windows.
After installing the
xvf_host(.exe)
application, only Windows requires some extra steps to install the correct
USB driver. The following instructions must be followed:
1. Connect the XVF3800 board to the host PC using a USB cable.
2. If some USB driver has been installed for the XMOS DFU Factory (Interface 4) as described in DFU ap-
plication setup, the device must be disabled by using Device Manager:
a. Open Device Manager and find the XMOS DFU Factory (Interface 4), this is usually located under
the USB Serial Bus Devices.
b. Right click on the interface and select Disable device as shown below:
111111

XMOS XVF3800 - User GuideXMOS XVF3800 - User GuideXMOS XVF3800 - User Guide
Fig. 3.1: Disable the control device in Device Control
c. Click Yes if the message below appears:
Fig. 3.2: Accept warning message
Note: The driver can be re-enabled again by selecting Enable device after a right-click on the device in Device
Manager
3. Download the third-party installation tool Zadig from https://zadig.akeo.ie/.
4. Open Zadig and select XMOS Control (Interface 3) from the list of devices. If the device is not present,
ensure Options -> List All Devices is checked.
5. Select libusb-win32 from the list of drivers.
6. Click the Install Driver button and wait for the installation to complete.
Fig. 3.3: Selecting the libusb-win32 driver in Zadig for the Control Interface
121212

XMOS XVF3800 - User GuideXMOS XVF3800 - User GuideXMOS XVF3800 - User Guide
3.2 Connecting to the XVF3800 Device
To use the host application, login to the host machine, either directly, via a VNC connection or
ssh
and to open
a terminal command line.
Change to the directory containing
xvf_host(.exe)
. If the host tools have been added to the path as above
this step is not needed.
The
xvf_host(.exe)
device control application is run from the command line.
To check connection to the XVF3800, any command can be given; for example, the command
xvf_host(.exe) --use <protocol> VERSION
where
<protocol>
can be
i2c
,
spi
or
usb
depending on the interface used in the specific firmware. The
default control protocol is USB.
This command should return “2 0 0”.
3.3 xvf_host Command Syntax
The general syntax of the
xvf_host(.exe)
command is
xvf_host(.exe) [ command | option ]
[ -u <protocol>] [ -cmp <path> ] [ -br ] [ command | option ]
More documentation on the available options in the use of the host application are found with
xvf_host(.exe) --help
A full list of control commands may be found using:
xvf_host(.exe) --list-commands
These commands are also listed in an Appendix of this User Guide.
It is possible to read all the control parameter settings from the XVF3800 using the following option:
xvf_host(.exe) --dump-params
To support scripted set up of the XVF3800 it is possible to save the list of commands in a text file (.txt) which
can be executed using:
xvf_host(.exe) --execute-command-list <command_file>.txt
Further options for saving and loading parameter sets can found by using the
--help
option or in the section
of the User Guide on tuning the device where their usage is described.
3.4 Microphone orientation
The XVF3800 supports arbitrary microphone geometries which can be specified in configuration files. Two
default configurations are included in the release package that are aligned to the geometries supported on
the XK-VOICE-SQ66 development kit.
•The linear configuration (-lin) comprises 4 microphones in a linear array, spaced 33mm apart, as shown
below:
131313

XMOS XVF3800 - User GuideXMOS XVF3800 - User GuideXMOS XVF3800 - User Guide
•The square configuration (-sqr) uses a 4 microphone array with a 66mm distance along each side as
shown below.
Note: These configurations are selected by a multiplexer on the XK-VOICE-SQ66 development kit when the
device boots. They have to be configured as part of the firmware build and cannot be changed in operation.
The microphone numbers in the diagrams above correspond to the labels on the XK-VOICE-SQ66 develop-
ment kit board. In the firmware configuration these microphones are mapped to 4 microphone indexes:
141414

XMOS XVF3800 - User GuideXMOS XVF3800 - User GuideXMOS XVF3800 - User Guide
MIC[0..3] which are used in the firmware and when using
xvf_host
. The mapping of the logical indexes
and the physical microphones on the XK-VOICE-SQ66 development kit is shown in the table below:
Table 3.1: Logical Microphone Index to physical microphone map-
ping
Logical Physical Microphone
Microphone Index Linear Config Square Config
MIC0 MIC0 MIC1
MIC1 MIC1 MIC4
MIC2 MIC2 MIC5
MIC3 MIC3 MIC3
3.4.1 Beam forming subsystem and Direction of Arrival indicator
As described in XVF3800 datasheet, the system uses a set of beams to focus on speakers and reduce un-
wanted sounds and reverberation in the output signal. The XVF3800 uses a free running beam that scans
the environment, identifies likely speakers and switches one of the two focused beams to that direction.
In normal operation the audio pipeline automatically selects the best signal to output.
It is possible to read back the direction that the beams are currently pointing. This is done with the
xvf_host
command AEC_AZIMUTH_VALUES. The output of the command contains 4 values:
•Focused beam 1
•Focused beam 2
•Free running beam
•Auto selected beam
Each value is the azimuth angle of the corresponding beam, provided in both radians and degrees. The coor-
dinate system used depends on the hardware configuration. The diagrams below show the azimuth angles
relative to the XK-VOICE-SQ66 development kit in the two default configurations.
Fig. 3.4: Azimuth angle in linear configuration (note - 0 to 180 degrees only)
151515

XMOS XVF3800 - User GuideXMOS XVF3800 - User GuideXMOS XVF3800 - User Guide
Fig. 3.5: Azimuth angle in square configuration
3.4.2 Using azimuth data For Direction of Arrival indication
The auto selection algorithm will switch between beams rapidly in some circumstances. The two focused
beams update relatively slowly, but the free running beam is designed to be sensitive so that it can rapidly
pick up the speech signal for a new talker entering the soundscape. As a result it can also pick up any noise
signals present.
To provide maximum flexibility to system designers, the XVF3800 only provides raw azimuth data. In most
use cases this data will require post processing - e.g. to only track the slow focused beams or to add a voice
activity detector to indicate when the direction of arrival data is valid.
3.5 Example Uses
The
xvf_host
tool allows the configuration of the XK-VOICE-SQ66 development kit to be changed during
operations. The following examples illustrate some common operations.
Note: All examples below will target UNIX-based platforms
3.5.1 Output Selection
By default, the left (first) channel of the device’s output is the processed output from the XVF3800’s AEC and
beamforming stage, while the right (second) channel is the raw input from one of the microphones after am-
plification. This selection provides a good comparison between the raw and processed audio. The selected
outputs may be changed by using the AUDIO_MGR_OP_L and AUDIO_MGR_OP_R commands. These com-
mands each take two integers defining the mux routing settings, described as a pair of (category, source)
values.
The available categories and sources are as detailed in Table 3.2.
161616

XMOS XVF3800 - User GuideXMOS XVF3800 - User GuideXMOS XVF3800 - User Guide
Table 3.2: Audio manager mux options
Category Sources
0: Silence 0: Silence
1: Raw microphone data - before amplification 0,1,2,3: Specific microphones accessed by index, no
system delay applied
2: Unpacked microphone data 0,1,2,3: Unpacked microphone signals. If using
packed input, access packed microphone data
though this category. This data is undefined when
not using packed input.
3: Amplified microphone data with system delay 0,1,2,3: Specific microphones accessed by in-
dex. This category provides the microphone sig-
nal passed to the SHF logical cores for processing.
Source 2 is the default setting for the right channel
output.
4: Far end (reference) data 0: Far end data received over I2S, post sample rate
conversion to 16 kHz if required
5: Far end (reference) data with system delay 0: Far end data received over I2S, post sample rate
conversion to 16 kHz if required, and with system
delay applied
6: Processed data 0,1: Slow-moving post-processed beamformed out-
puts, 2: Fast-moving post-processed beamformed
output, 3: The “auto-select” beam; chooses the best
of the previous three beams as an output, recom-
mended option for selecting the beamformed out-
puts
7: AEC residual data 0,1,2,3: AEC residuals for the specified beam
8: User chosen channels 0,1: These currently copy the auto-select beam (cat-
egory 6, source 3) and are the default setting for the
left channel output.
9: Post SHF DSP channels 0,1,2,3: All output channels from user post SHF DSP
10: Far end at native rate 0,1,2,3,4,5: Data passed from I2S logical core to Au-
dio Manager logical core. All sources carry useful
data if the external interface rate is 48 kHz. Only
sources 0 and 1 carry useful data if the external in-
terface rate is 16 kHz. See the Data Plane Detailed
Design section in the Programming Guide for infor-
mation on the interface between these two logical
cores.
11: Amplified microphone data before system delay 0,1,2,3: Specific microphones accessed by index.
12: Amplified far end (reference) with system delay 0: Far end data received over I2S, post sample rate
conversion to 16 kHz if required, and with a config-
urable fixed gain and system delay applied. This cat-
egory provides the reference signal passed to the
SHF logical cores for processing.
Fig. 3.6 shows the available categories and sources. Inputs to the category multiplexer that have no prelimi-
nary multiplexer only support a single source.
171717
Table of contents
Other XMOS Computer Hardware manuals

XMOS
XMOS XK-XMP-64 User manual

XMOS
XMOS XS1-L1 User manual

XMOS
XMOS VocalFusion XVF3510 User manual

XMOS
XMOS XC-1A User manual

XMOS
XMOS MultiUART User manual

XMOS
XMOS xTAG v3.0 User manual

XMOS
XMOS XS1-L2 User manual

XMOS
XMOS XTAG-2 User manual

XMOS
XMOS XC-1 User manual

XMOS
XMOS xCORE-200 Multi-channel Audio board Guide
Popular Computer Hardware manuals by other brands

TerraTec
TerraTec Cinergy S2 PCI HD Quick setup guide

Asus
Asus HDAV1.3 - Xonar Slim Sound Card user manual

Analog Devices
Analog Devices EVAL-ADF4152HVEB1Z user guide

Fluid Gaming
Fluid Gaming Vector AX user guide

THORLABS
THORLABS ELLB Original instructions

Tucker-Davis Technologies, Inc.
Tucker-Davis Technologies, Inc. RZ5 Operator's manual