> For the complete documentation index, see [llms.txt](https://docs.facephi.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.facephi.com/docs.facephi-en/sdks/backend-sdk/voice/technical_documentation/technical_specifications.md).

# Technical specifications

## 1. Introduction

**Facephi Voice Service** It is a Rest API service in C++ to which audio files can be sent for processing and the result of the speech recognition process can be obtained. The service offers an endpoint to register (enroll) a new voice, and another to authenticate a voice.

## 2. Hardware requirements

|         | Minimum requirement                                         | Recommended requirement             |
| ------- | ----------------------------------------------------------- | ----------------------------------- |
| CPU     | 2 cores with support for the SSE4.2 instruction set, >=2GHz | 16 cores, with support for AVX2 ISA |
| RAM     | 4 GB                                                        | 8 GB                                |
| Disk    | 4 GB                                                        | 4 GB SSD                            |
| Network | 100 Mbps                                                    | 1 Gbps                              |

## 3. Software requirements

* Linux x86\_64 (Ubuntu 24.04 or later) with Docker 24.0 or later.

or

* Windows 10 x64 with Docker 24.0 or later.

## 4. Enrollment requirements

Three recordings from the same user pronouncing a secret phrase are required, and they must meet the following minimum requirements:

| Minimum enrollment requirements    | Values   |
| ---------------------------------- | -------- |
| Audio duration                     | > 700 ms |
| Relative speech length (\*)        | > 0.55   |
| Signal-to-noise ratio (SNR) (\*\*) | > 8 dB   |

*(\*) Relative speech length = Speech duration / Audio duration* *(\*\*) The recommended distance from the speaker is 30 cm, a natural distance when using a handheld device*

During the recording, only one person should speak. To verify that the enrollment was performed by a single person, the individual biometric templates generated from the three recordings are compared.

| Minimum enrollment requirements                                                                                            | Threshold |
| -------------------------------------------------------------------------------------------------------------------------- | --------- |
| If the match probability is below the similarity threshold, the registration is rejected and a new recording is requested. | 0.55      |

## 5. Authentication requirements

| Minimum authentication requirements | Values   |
| ----------------------------------- | -------- |
| Audio duration                      | > 700 ms |
| Relative speech length              | > 0.55   |
| Signal-to-noise ratio (SNR)         | > 3 dB   |

## 6. Metrics

There are two common channels through which voice biometric validation is applied: via microphones or telephone lines.

**Metrics extracted for the microphone use case (new noctua version).**

| Threshold | FAR (%) | FRR (%) |
| --------- | ------- | ------- |
| 0.5       | 0.17    | 3.32    |

## 7. Security recommendations

* Keep `auth_jwt_secret` in a secret store or in an injected environment variable, instead of including it directly in the container images.
* Optional JWT authentication is configured at startup from `config.json` or through the environment variables `FACEPHI_VOICE_REST_AUTH_*`.
* The public endpoints that remain unauthenticated are `GET /api/v1/health`, `GET /api/v1/version` and the preflight requests `OPTIONS`.
* `GET /api/v1/config` never exposes the JWT startup settings and `POST /api/v1/config` cannot modify them.

**Metrics extracted for the telephone use case.**

| Threshold | FAR (%) | FRR (%) |
| --------- | ------- | ------- |
| 0.5       | 1       | 9.12    |

**FAR** (False Acceptance Rate, false acceptance rate) is the probability that the system incorrectly accepts an impostor as a legitimate user.

**FRR** (False Rejection Rate, false rejection rate) is the probability that the system incorrectly rejects a legitimate user.

## 7. liveness detection (liveness)

| Minimum requirements for liveness detection    | Values    |
| ---------------------------------------------- | --------- |
| Speech length for Replay Attack detection      | > 1000 ms |
| Speech length for Voice Clone Attack detection | > 3000 ms |
| Signal-to-noise ratio (SNR)                    | > 10 dB   |

| Recommended thresholds for liveness detection                                            | Threshold |
| ---------------------------------------------------------------------------------------- | --------- |
| Liveness validation will be considered successful when the value is above the threshold. | 0.5       |
