> 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++ that can receive audio files for processing and obtain the result of the speech recognition process. The service offers an endpoint for registering (enroll) a new voice, and another for authenticating 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 of the same user pronouncing a secret phrase are required, which must meet the following minimum requirements:

| Minimum requirements for enrollment | 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 to the speaker is 30 cm, a natural distance when using a handheld device*

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

| Minimum requirements for enrollment                                                                                        | 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 requirements for authentication | Values   |
| --------------------------------------- | -------- |
| Audio duration                          | > 700 ms |
| Relative speech length                  | > 0.55   |
| Signal-to-noise ratio (SNR)             | > 3 dB   |

## 6. Metrics

There are two common channels in which voice biometric validation is applied: through 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, rather than 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 (Replay Attack)           | > 1000 ms |
| Speech length for voice clone attack detection (Voice Clone Attack) | > 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       |
