XMOS VocalFusion XVF3800 User Manual

Voice processor
Hide thumbs Also See for VocalFusion XVF3800:
Table of Contents

Advertisement

Quick Links

XMOS XVF3800 - User Guide
Release: 3.1.0
Publication Date: 2024/02/08

Advertisement

Table of Contents
loading

Summary of Contents for XMOS VocalFusion XVF3800

  • Page 1 XMOS XVF3800 - User Guide Release: 3.1.0 Publication Date: 2024/02/08...
  • Page 2: Table Of Contents

    Table of Contents 1 Overview 2 Setting Up the Hardware Introduction ..........2.2 Hardware Setup - USB Accessory (UA) Configuration .
  • Page 3 5.2.2 XMOS tools ..........55 5.2.3...
  • Page 4 10 APPENDIX – Control Commands 10.1 AEC Tuning and Control Commands ........75 10.2 Device Metadata Commands .
  • Page 5: 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.
  • Page 6: Setting Up The Hardware

    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 computer and a development computer (Windows, macOS or Linux are supported). Each com- puter must have at least one USB connection.
  • Page 7 1. 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 ---------------------- Name Adapter ID...
  • Page 8: Installing The Ua Firmware

    //www.xmos.com/view/Tools-15-Documentation. 2.2.3 Installing the UA firmware The XVF3800 binary 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.1. Table 2.1: Build configuration settings for UA...
  • Page 9: Hardware Setup - I S (Int-Device) Configuration

    2.3.1 INT-Device 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 computer (Windows, macOS or Linux are supported). This computer must support USB con- nections and have the ability to write onto SD memory cards.
  • Page 10: Setting Up The Int-Device Configuration

    Follow these instructions to generate the OS image and configure the Raspberry 3. When running the setup script on the Raspberry Pi, the following commands should be used to setup the Raspberry Pi for use with the XK-VOICE-SQ66 development kit: git clone https://github.com/xmos/vocalfusion-rpi-setup vocalfusion-rpi-setup ./setup.sh xvf3800-intdev 1.
  • Page 11: Installing The Int-Device Firmware

    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.
  • Page 12: Setting Up The Audio

    3. Select the required binary firmware image from the release package, and transfer it to the XK-VOICE- xflash SQ66 development kit using the 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.
  • Page 13 Fig. 2.4: XVF3800 demo example layout Note: The XVF3800 implements a mono audio processing pipeline so a mono speaker system should be used for optimum performance. By default the system uses the left channel (channel 0 on I2S) as the AEC reference signal.
  • Page 14: Playback And Recording

    The device should appear as a USB sound card with the default name of XVF3800 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):...
  • Page 15: Troubleshooting

    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.
  • Page 16: Aec Convergence

    use the keyboard arrows to select PCM-1 volume and increase it up to 100%. alsamixer 5. Press ESC to exit 6. Before unplugging the XVF3800-UA, run the command: sudo alsactl store to store the setting permanently; otherwise the steps above must be repeated every time the XVF3800- UA is re-connected.
  • Page 17: Using The Host Application

    (Linux, macOS, Raspberry Pi OS) or (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.
  • Page 18 1. Connect the XVF3800 board to the host computer 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 (UA), the device must be disabled by using Device Manager: a.
  • Page 19: Connecting To The Xvf3800 Device

    Manager 1. Download the third-party installation tool Zadig from https://zadig.akeo.ie/. 2. 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. 3. Select libusb-win32 from the list of drivers.
  • Page 20: Xvf_Host Command Syntax

    3.3 xvf_host Command Syntax xvf_host The general syntax of the command is: (sudo) 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: (sudo) xvf_host(.exe) --help A full list of control commands may be found using:...
  • Page 21 • The square configuration (-sqr) uses a 4 microphone array with a 66mm distance along each side as shown below. 17 17 17...
  • Page 22 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.
  • Page 23: Beam Forming Subsystem And Direction Of Arrival Indicator

    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.
  • Page 24: Using Azimuth Data For Direction Of Arrival Indication

    Fig. 3.5: Azimuth angle in square configuration During post-processing the speech energy (spenergy) is also calculated for each of the 4 beams. This value indicates whether speech is present in the beam as well as the amplitude. Non-zero spenergy means that xvf_host the beam probably contains speech.
  • Page 25: Example Uses

    following command: python3 xvf_tools.py doa_plot --command-help xvf_host for usage instructions. This command requires a positional argument with the path to the binary, --protocol and a few optional arguments, for example to select the correct communication protocol. 3.5 Example Uses xvf_host tool allows the configuration of the XK-VOICE-SQ66 development kit to be changed during operations.
  • Page 26 Table 3.2: Audio manager mux options Category Sources 0: Silence 0: Silence. This is the default setting for the right channel output. 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.
  • Page 27 Fig. 3.6: Output Selection Multiplexers For example, to set the left output to the 4th raw microphone signal (without gain applied), issue the com- mand: xvf_host AUDIO_MGR_OP_L 1 3 This will set the left channel to output the 4th (0-indexed) microphone signal of the 4 present. To reset this channel back to its default value, issue:...
  • Page 28: Setting An Output Pin

    xvf_host AUDIO_MGR_OP_L 8 0 to set the channel to the postprocessed auto-selected output beam. Similarly, the right channel may be set to any desired category/source; to reset to its default value, issue: xvf_host AUDIO_MGR_OP_R 0 0 3.5.2 Setting an Output Pin xvf_host can be used to configure the General Purpose Outputs on the XVF3800.
  • Page 29: Tuning The Application

    4 Tuning the Application The measured performance of the XVF3800 depends very heavily on the electrical and acoustic environment of the end product that it is incorporated into. In order to achieve optimal performance, including the ability to pass product certification tests, it is necessary to perform a configuration and tuning process to adapt the firmware to the end product’s form factor and hardware design.
  • Page 30 • Further, ensure a good understanding of the delay between the microphones and the reference signal input; see section on system delay for details, requirements, and terminology surrounding this. – This delay should remain constant while the device is running. Any inconsistency in this delay will result in severely degraded algorithmic performance.
  • Page 31: Initial Parameter Setting

    4.1.2 Initial Parameter Setting There are a selection of parameters that should be chosen before the tuning process starts. This guide does not provide a process by which to select a value for these parameters: AEC_HPFONOFF • : This sets a high-pass filter (HPF) on the microphone signals as they enter the processing block;...
  • Page 32 Fig. 4.2: Top-level schematic showing the 5 input and output paths of the XVF3800 Fig. 4.2, numbered points correspond to the suggested order of testing. Note: If direct monitoring of the signal path immediately prior to the XVF3800 is not feasible, it is permissible to skip this test;...
  • Page 33: Control Path

    4.1.3.2 Control Path This test will attempt to verify that the XVF3800 has a stable control interface. This tests path 2 in Fig. 4.2. Following the guidelines in Using the Host Application, issue: xvf_host VERSION and ensure that the device returns “3 1 0”. 4.1.3.3 Output Path This test will attempt to verify that a signal injected into the XVF3800 is output faithfully from the XVF3800 and successfully output by the device.
  • Page 34: Microphone Operation

    4.1.3.5 Microphone Operation Ensure that the microphone assignment is as expected and that they sound natural and artefact-free. This tests paths 3 and 5 in Fig. 4.2. Set up the XVF3800’s output mux as follows to output raw data for microphones 0 and 1: xvf_host AUDIO_MGR_OP_L xvf_host AUDIO_MGR_OP_R and set up as follows to output raw data for microphones 2 and 3:...
  • Page 35: Microphone Gain

    AUDIO_MGR_REF_GAIN same level, i.e. with a peak of 0 dB . If this is not the case, tune such that the post-gain reference input has the largest value possible, up to 0 dB Note: White noise is chosen in this example as it contains equal energy in all frequency bands. This is important in cases where e.g.
  • Page 36: System Delay

    erence input and observe the post-gain output. This will show any system noise between the reference input and the audio processing pipeline. Calculate the average power in a short segment (e.g. 10 sec- onds), typically by taking the mean of the squared values of each sample. This is the desired low bound AEC_AECSILENCELEVEL ;...
  • Page 37 In an ideal system, the delay between the reference and microphone signals should be at or less than 40 sam- AUDIO_MGR_SYS_DELAY ples. The parameter allows a configurable delay to be applied to either the microphone signal or the reference signal to achieve this 40 sample difference. A positive value for this parameter, measured in number of samples, sets a delay on the reference signal;...
  • Page 38: Aec Operation

    mic_ref_correlate Fig. 4.4: Example output of Fig. 4.4 shows a 7 sample delay between microphones and the reference signal. This system is causal, but AUDIO_MGR_SYS_DELAY only just. Setting to around -30 will bring the system to the recommended headroom. AUDIO_MGR_SYS_DELAY This procedure may be repeated after the parameter has been set to verify that the sys- tem remains causal and has the desired (less than 40 samples) delay between the reference and microphone...
  • Page 39 stance forces a significant change in the AEC. When the AEC reaches convergence (which is expected to take less than 30 seconds), read the AEC coeffi- cients from the device: xvf_host (-gf --get-aec-filter) [filename.bin] This operation generates 4 separate files <filename.bin>.f0.m[0..3], one per AEC channel. These four files can be analysed in one operation with the read_aec_filter command provided: python3 xvf_tools.py read_aec_filter <filename.bin>...
  • Page 40: Agc Configuration

    4.2.6 AGC Configuration The audio pipeline includes an automatic gain controller (AGC) which is applied equally to all four processed outputs from the XVF3800. PP_AGCGAIN PP_AGCMAXGAIN PP_AGCDESIREDLEVEL PP_AGCONOFF This is controlled by four parameters: , and PP_AGCGAIN • both controls and reports the current multiplicative gain applied to the output beams by the AGC.
  • Page 41: Emphasis

    PP_AGCMAXGAIN speech, should be reduced. There is likely to be a compromise between avoiding unwanted amplification of background noise and making very quiet speech sufficiently loud. Note: It is not recommended to change the AGC time constants. Increasing their speed can result in level fluctuations during speech.
  • Page 42: Mgscale

    high frequencies should converge as quickly as the low frequencies. It should not be observed that the high frequencies converge quicker or slower. 4.2.8 MGSCALE PP_MGSCALE parameter controls additional noise suppression that is applied during periods of far-end activity. The aim is to optimise speech clarity output from the device during periods of stationary far-end activity, while also ensuring that there is good echo suppression in periods of non-stationary far-end activity.
  • Page 43 (continued from previous page) xvf_host PP_AGCONOFF xvf_host AUDIO_MGR_OP_L [microphone number] xvf_host AUDIO_MGR_OP_R [microphone number] sources/modules/fwk_xvf/modules/tuning/audio_files Depending on the device sample rate, copy from white_noise_0dbfs_2ch_16khz.wav white_noise_0dbfs_2ch_48khz.wav the track . Play through the ref- erence input the white noise signal, and capture the AEC residuals that are output from the device. Take a Fourier transform of the interval from 40 - 60 seconds, and plot the magnitude of the coefficients.
  • Page 44: Tuning The Non-Linear Model

    4.2.10 Tuning the Non-Linear Model 4.2.10.1 Non-linear Echo It is likely that in all devices, regardless of the quality of the audio design, there will exist some non-linearities. The aim of non-linear estimation is to model the remaining residual echo after linear echo content (including tail echoes) has been removed.
  • Page 45: Tuning Setup For Non Linear Model

    as movement of people or objects. This tuning step is very deliberately placed after any gain or pre-processing adjustments have been made. Any changes to the device’s gain structure, including changing any filtering, will require retuning of the non-linear model. The tuning process should be run two or three times, and the results compared.
  • Page 46 Local Device Fig. 4.8: Top-level diagram of a system where the audio host and control host are the same device...
  • Page 47 For this route, it is assumed that the host device is also the device that is providing audio to the XVF3800, through e.g. an I S interface for the XVF3800 INT-Device variant or USB interface for the XVF3800 UA device. xvf_tools.py nl_model_training , it is possible to run the command...
  • Page 48 Remote Device Fig. 4.9: Top-level diagram of a system where the audio host and control host are separate devices...
  • Page 49: Echo Suppression

    For this route, it is assumed that a 3rd device is acting as the audio source (here termed the “audio host”). Therefore, to issue control commands, it is necessary to remotely connect to the “control host” (as- remote_nl_model_training sumed to be a Raspberry Pi) over SSH. This can be done using the command xvf_tools.py from .
  • Page 50: Pp_Dtsensitive

    4.2.11.1 PP_DTSENSITIVE PP_DTSENSITIVE allows some control over the balance struck between double-talk performance and echo suppression, including the use of an optional near-end speech detector. This is summarised in Fig. 4.10; as echo suppression increases, double-talk performance will tend to decrease as more near-end is suppressed. PP_DTSENSITIVE Fig.
  • Page 51: Pp_Gamma_E And Pp_Gamma_Enl

    4.2.11.2 PP_GAMMA_E and PP_GAMMA_ENL The objective of tuning these two parameters is the removal of echoes to pass e.g. Teams EQUEST and ECC specifications. Ensure that this tuning step takes place in an anechoic or mildly reverberant environment, with an RT60 less than 0.3 s. Set the device as follows to output the autoselect beam in the left channel and the AEC residual signal for microphone 0 in the right channel: xvf_host PP_AGCONOFF...
  • Page 52: Noise Suppression

    4.2.12 Noise Suppression PP_MIN_NS Two parameters control suppression of stationary and non-stationary noise in the device output: PP_MIN_NN respectively. These parameters take values between 0 and 1, representing the multiplicative PP_MIN_NS attenuation of these two noise sources. For example, is set to 0.15 by default, representing a PP_MIN_NN roughly 15 dB attenuation of stationary noise in the device output.
  • Page 53: Attns_Nominal

    PP_AGCGAIN PP_AGCONOFF value of , this module has no effect when is set to 0. Because both the Teams v4 and Zoom Rooms specifications specify this suppression as a ratio between the noise at a nominal speech level and the noise at a low speech level, it may be required to tune both of these parameters in parallel;...
  • Page 54: Path Change Detection

    4.2.14 Path Change Detection The XVF3800 provides a facility to detect significant path changes in the device’s environment such as han- dling the device and moving to a different location using a module called the Path Change Detector (PCD). If a path change is detected, heavy near-end suppression during far-end activity is applied in order to allow the AEC time to reconverge to its new environment.
  • Page 55 The user must first select in the lower left corner: • the band appropriate for the device: wideband or superwideband • the desired resolution: “octave bands” gives an 8 band equalizer with control points at one octave inter- vals [62.5, 125, 250, 500, 1000, 2000, 4000, 8000], while “1/3 octave bands” give finer resolution, with a 22 band equalizer with control points at 1/3 octave intervals.
  • Page 56: Changing Default Parameter Values

    xvf_host --get-eq-filter eq.bin ploteq and it can be visualised using the Import command in the GUI of the command. 4.3 Changing Default Parameter Values product_defaults.c sources/app_xvf3800/ The default parameters set at start-up are loaded from the file src/default_params . In this file the values are included from some header files auto-generated at compile product_defaults.c sources/ time.
  • Page 57 The parameters in the file are organized into arrays, and each array contains all the parameters related to a particular control resource ID. The parameter name is stored in the key and the default value in the default_value key. In the example above, the default value of the parameter PP_AGCONOFF belonging to the PP_RESID is on.
  • Page 58 "XVF3800 Voice Processor" SERIAL_NUMBER_STR: "000000" CONTROL_INTERFACE_STR: "XMOS Control" HID_INTERFACE_STR: "XMOS HID" DFU_FACTORY_INTERFACE_STR: "XMOS DFU Factory" DFU_UPGRADE_INTERFACE_STR: "XMOS DFU Upgrade" DEFAULT_BIT_DEPTH_IN: "16" DEFAULT_BIT_DEPTH_OUT: "16" Note: When the default parameters are changed, it is necessary to rebuild the application and reload onto the XVF3800 as described in the following section.
  • Page 59: Building The Application Firmware

    5.2.2 XMOS tools XTC Tools 15.2.x : This is the XMOS toolchain which allows users to compile, link, deploy and debug applica- tions on all XMOS processors. The XTC Tools can be downloaded from https://www.xmos.com/software-tools/...
  • Page 60: Build Tools

    This section describes how to use the second package. Release packages for XVF3800 can be obtained from the XVF3800 developer page or from your XMOS rep- resentative. Load the ZIP archive onto your development platform and expand the archive into a convenient directory. It contains the release notes and a TAR file.
  • Page 61: Standard Configurations

    5.3.1 Standard Configurations The XVF3800 release package contains a set of standard build configurations that will suit the majority of use cases for the XVF3800 device. The table below lists the key configuration parameters. Table 5.1: Build-time combinable parameters Parameter Options Abbreviation Notes...
  • Page 62: Build Process

    Note: The software packages in the Prerequisites section must be installed before starting this process. To build the XVF3800 application, open a command-line terminal and ensure that the XMOS tools are config- ured in the environment. This can be checked by typing: xcc --version Configuring which should display the tools version information.
  • Page 63: Build An Executable

    5.4.3 Build an executable The next phase is to build a specific executable. The release package contains a set of configurations that cover the main use case for the XVF3800 device. To see the available build presets use: cmake --build --list-presets The naming scheme for these presets is defined in the Standard Configurations section above.
  • Page 64: Using Spi Boot

    5.6 Using SPI Boot 5.6.1 Creating a SPI Boot File application_xvf3800_[..].xe To use the built executable generated from the above process as a SPI boot .bin image it is necessary to convert the image into a file that includes a bootloader. .bin sources/modules/fwk_xvf/modules/ The files required to build this...
  • Page 65: Fast Spi Booting

    5.6.2.2 Fast SPI booting The SPI boot process is capable of running significantly faster (a few hundred milliseconds typically) through use of an optimized boot process. An example of a speed-optimized boot host utility can be found in the sources/modules/fwk_xvf/modules/boot_spi_slave/fast_send subdirectory.
  • Page 66 The default firmware flashes the green LED on the XK-VOICE-SQ66 development kit to indicate suc- cessful boot. If boot was not successful first try reducing the SPI clock speed and ensure that the transfer_block_num matches the generation stage output. To check the hardware is operational you may also wish to try the Safe SPI Booting stage first.
  • Page 67: Some Acoustic Design Guidelines

    6 Some Acoustic Design Guidelines This chapter presents a brief guide to a number of introductory acoustic considerations that designers should take into account when integrating the XVF3800 into their end product. It should be stressed that a more ideal acoustic design will result in fewer compromises needing to be made whilst configuring the XVF3800.
  • Page 68 The aperture defines the low frequency limit based on the ability to measure a phase difference between the microphones, so when the wavelength is much larger than the array aperture, the phase (and signal) at each microphone is nearly identical and it’s impossible to differentiate between the two signals. There is not a hard limit in the way there is for high frequency;...
  • Page 69: Loudspeaker(S)

    Fig. 6.1: Sample coherence plot between two microphones 6.2 Loudspeaker(s) The loudspeaker, power amplifier and DAC are considered together as the playback path of the product. The frequency response of this assembly should cover the desired voice band, e.g., wideband should cover 250 Hz to 6.3 kHz.
  • Page 70: Enclosure And Mounting

    and/or the use of soundproofing material between loudspeakers and the microphones. Additionally, product enclosures should be designed in such a manner as not to introduce non-linear effects; they should not rattle, click, vibrate, or otherwise introduce extraneous noise during normal operation. Non-linearities present in the loudspeaker/amplifier stage are more difficult to provide generalised advice on.
  • Page 71: Dfu Operations

    The following instructions must be followed: 1. Connect the XVF3800 board to the host computer using a USB cable. 2. If some USB driver has been installed for the XMOS Control (Interface 3) as described in xvf_host appli-...
  • Page 72 Fig. 7.1: Disable the control device in Device Control c. Click Yes if the message below appears: 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. dfu-util Note: In the rest of this document when using the app in the code examples, the command is...
  • Page 73: Setting Up The Host Computer (Int)

    7.2 Setting up the host computer (INT) The INT build of the XVF3800 firmware is able to perform DFU over an I C interface, using a custom im- plementation closely following that set out by the USB Device Class Specification for DFU, Version 1.1. An example host application is included for the Raspberry Pi to showcase this implementation and to provide guidelines on how a custom compliant host application may be written.
  • Page 74: Download An Upgrade Image To The Device

    dfu-util(.exe) -h xvf_dfu or the help menu of xvf_dfu -h A more detailed description of the I C implementation and its control process may be found in Section 2 of the Programming Guide. 7.4.1 Download an upgrade image to the device The DFU download operation allows the user to upgrade the firmware of the XVF3800-UA.
  • Page 75: Reboot The Device

    The DFU upload operation allows the user to read the factory and upgrade images of the XVF3800. This feature is useful for debugging purposes, for example to provide XMOS with the exact firmware used on a device. The command to do that in the UA build is the following: (sudo) dfu-util(.exe)
  • Page 76: Error Handling

    7.4.4.1 Error handling The XVF3800 device supports the following errors, and they are used only during the download operation: • errWRITE: this error is returned if the host sends a download request for the wrong partition, for example the factory partition •...
  • Page 77: Automatic Speech Recognition

    8 Automatic speech recognition The XVF3800 allows outputting audio enhanced for Automatic Speech Recognition (ASR). The ASR output provided by the XVF3800 is not optimized for voice communication, but it is meant to be used with wake word detection engines. The ASR audio is extracted after the beamformer, and it is not fed into the post processor. This means it has no noise suppression, which is desirable as ASR performance is usually degraded by non- linear processing.
  • Page 78: Hid Interface

    9 HID Interface The UA variant of the device supports a HID interface. The HID interface adds support for USB standard input and output reports for a telephony device. The GPIO button and LEDs on the XK-VOICE-SQ66 development kit are mapped to buttons and LEDs in the HID input and output reports. The HID Interface design section of the Programming Guide describes the HID descriptors and the mapping between HID buttons/LEDs and the XK-VOICE-SQ66 development kit buttons/LEDs in more detail.
  • Page 79: Appendix - Control Commands

    10 APPENDIX – Control Commands There are a number of control commands available for use with the XVF3800. These are detailed using the --list-commands option of the Host Application, but may also be found below for reference. Note that all parameters in this appendix will be reset to their default values on a device reset.
  • Page 80 Table 10.1 – continued from previous page Command name Read / Params Param Description Write format AEC_AECSILENCELEVEL READ / float Power threshold for signal detection in WRITE adaptive filter.(set,cur), Valid range (set): [0.0 .. 1.0] Valid range (cur): 0.05*set, 1e-6f or set..
  • Page 81 Table 10.2 – continued from previous page Command name Read / Params Param Description Write format PP_NL_MODEL_CMD_ABORT WRITE int32 Reset the special command state ma- ONLY chine. Used for safely exiting from a NL model read/write sequence that has gone wrong.
  • Page 82 Table 10.2 – continued from previous page Command name Read / Params Param Description Write format PP_GAMMA_ENL READ / float Over-subtraction factor of non-linear echo. WRITE Valid range: [0.0 .. 5.0]. Default value(s): 1.1 PP_NLATTENONOFF READ / int32 Non-Linear echo attenuation. Valid range: WRITE 0,1 (off,on).
  • Page 83: Device Metadata Commands

    10.2 Device Metadata Commands These commands focus on querying the device’s metadata, e.g. software version, boot status, and build information. Table 10.3: Metadata control commands Command name Read / Params Param Description Write format VERSION READ uint8 The version number of the firmware. ONLY The format is VERSION_MAJOR VER- SION_MINOR VERSION_PATCH...
  • Page 84: Audio Manager Commands

    10.3 Audio Manager Commands These commands are targeted toward setting and retrieving various options around the audio path into and out of the device, including setting I S loopback modes and debug “packed” IO modes. Includes diagnostic data on idle times for both the audio manager core and the I S core.
  • Page 85 Table 10.4 – continued from previous page Command name Read / Params Param Description Write format READ / uint8 Default implementation post DIO_MGR_SELECTED_CH WRITE processing will this select ANNELS which channels should be output to MUX_USER_CHOSEN_CHANNELS. Note that a customer implementation of the beam selection stage could override this command.
  • Page 86 Table 10.4 – continued from previous page Command name Read / Params Param Description Write format AUDIO_MGR_OP_ALL READ / uint8 Sets category source WRITE 3 sources on L channel and all 3 sources for R channel. Equivalent to AUDIO_MGR_OP_[L,R]_PK[0,1,2] with suc- cessive pairs of arguments.
  • Page 87: Gpio Commands

    10.4 GPIO Commands These commands set up and manipulate various functions of the device’s GPO and GPI services. Table 10.5: GPIO control commands Command name Read / Params Param Description Write format GPI_INDEX READ / uint8 Set/get pin index for next and subse- WRITE quent GPI reads.
  • Page 88: Appendix - Tuning The Loudspeaker

    11 APPENDIX – Tuning the Loudspeaker Tuning the XVF3800 to optimise loudspeaker performance with the XK-VOICE-SQ66 development kit involves four steps: 1. Optionally adding EQ to the loudspeaker frequency response, 2. Setting the maximum loudspeaker volume, 3. Retraining the non-linear matrix in the XVF3800 audio pipeline, 4.
  • Page 89: Setting The Maximum Loudspeaker Volume

    1. Use the Room EQ Wizard (REW) to determine the filtering to add. Start by measuring the loudspeaker response at a close distance, then add EQ filters to shape the response as required. 2. Use the Audio EQ Cookbook equations to generate biquad coefficients.
  • Page 90: Appendix - Alternative Tuning Parameters

    12 APPENDIX – Alternative Tuning Parameters The default tuning parameters have been selected such the XK-VOICE-SQ66 development kit will perform well against the Microsoft Teams V5 “Personal Space Speakerphone” specification. Parameters related to the loudspeaker, such as EQ and the non-linear model, are unique to specific loudspeakers. Different gain and AGC settings may also be needed, depending on the requirements of the specification.
  • Page 91: Shared Space Speakerphone At 4.5 M Using A Genelec 8020 Loudspeaker

    12.2 Shared Space Speakerphone at 4.5 m using a Genelec 8020 loudspeaker For meeting the Teams Shared Space Speakerphone at 4.5 m specification using a Genelec 8020 loudspeaker, the following changes are required: • XK-VOICE-SQ66 development kit line output must be configured to balanced to match the Genelec 8020 input.
  • Page 92: Appendix - List Of Applications

    13 APPENDIX – List of applications The application file names are described here. More information about the applications below can be found in the User Guide. application_xvf3800 All the application file names start with and the rest of the information is explained in the tables below.
  • Page 93 Build with I2S audio at 48 kHz intdev-lr48-lin-i2c- linear microphone array, control over I2C slave, and external Master CLK extmclk.xe intdev-lr48-lin-i2c- linear microphone array, control over I2C slave, and mapping of focused beams spatial.xe to stereo output intdev-lr48-lin-i2c.xe linear microphone array, control over I2C slave intdev-lr48-lin-spi- linear microphone array, control over SPI slave, and external Master CLK extmclk.xe...
  • Page 94 Copyright © 2024, XMOS Ltd XMOS Ltd. is the owner or licensee of this design, code, or Information (collectively, the ”Information”) and is providing it to you ”AS IS” with no warranty of any kind, express or implied and shall have no liability in relation to its use.

Table of Contents