Private Pilot ReferenceProposed Streaming ContractOptional Signed Receipt

Developer API & Proposed Streaming Designs

Reference the implemented file-verification POST route and checkout-only SDKs for a private pilot. Streaming integrations below are proposed designs.

Private PilotSDKs from Repository Checkout

Repository API & SDK Reference

This repository contains the implemented Cloudflare Pages POST verification route, Python and TypeScript SDK source, and browser analysis code. The SDK examples require a repository checkout supplied by the operator; no public PyPI or npm release is established. The deployed POST route permits limited unauthenticated requests, while managed pilot API keys require operator issuance. Availability and production controls still require operator confirmation. Streaming, telephony, and gRPC examples below are proposed integrations, not deployed endpoints.

Interface Release State

Pilot and Research

These states distinguish public pages and code from operator-managed access and proposed integrations. A published interface does not imply validated accuracy or guaranteed availability.

InterfaceCurrent stateWhat is available
Browser demoPublic, local analysisTry it in the browser. Analysis runs on the device; voluntary research contribution is a separate upload action.
POST /api/v1/verifyDeployed pilot routeLimited anonymous requests are accepted. Operator-configured keys enable the authenticated rate limit; key issuance is managed by the operator. No availability commitment is established.
29-sample verifierPublic downloadDownload the standalone Node.js verifier to fetch the public WAVs, check hashes, and recompute their published scores without a repository checkout. It does not validate unseen-audio accuracy or upstream labels.
Python and TypeScript SDKsPrivate checkout sourceInstallation requires an operator-supplied repository checkout. No public PyPI or npm package release is established.
WebSocket, gRPC, SIP, telephony, Go, and RustProposed or future designsNo live streaming endpoint, telephony adapter, or released Go/Rust SDK is established here.
Signed receiptsOptional server capabilityThe currently deployed API is unsigned. Server signing requires a configured private key; the offline Python proof examples show signed receipts separately.
Local C2PA WAV verifierStandalone development-qualified downloadDownload the verification bundle. Requires the separately installed official tool and an independently obtained signer certificate. This does not add C2PA generation to the API or establish product conformance.

Machine-readable file API contract

Implemented POST only

Download the OpenAPI 3.1 JSON, Postman collection, or Bruno collection ZIP. Import the OpenAPI file directly into Bruno or extract the ZIP and open its collection folder. Choose a local WAV file inside the client before sending. These artifacts describe the implemented complete-recording route; they contain no live credentials.

Server signing is optional. A signed vendor receipt is a bare Ed25519 attestation, not a C2PA credential. The Proof Lab shows local receipt and source-hash checks; independent issuer trust and audio-byte matching are separate checks. This API uses JavaScript; the separate local WebAssembly sandbox below is not its runtime. Live streaming, SIP/PBX transport and C2PA packaging are not implemented by this API.

For existing C2PA WAV manifests, the local verification ZIP includes a Python wrapper, generated-tone development fixtures, public test certificates and file hashes. It requires official c2patool 0.28.1 installed separately, plus an independently obtained signer leaf certificate. Linux x86-64 tests distinguish valid claim integrity from signer trust and reject tampered, mismatched, unsigned and malformed inputs. Primary validation disables remote-manifest and OCSP fetching; certificate extraction reads the exact local binary manifest. This is not OS network isolation and revocation is not freshly checked offline. It does not authenticate speakers, validate detector accuracy or establish C2PA certification.

File API limits: maximum 25 MiB and 30 seconds (MCP audio analysis also limits recordings to 30 seconds), with duration checked before allocating decoded audio. Decoder support: RIFF/WAVE PCM 8/16/24-bit or IEEE float32, 1–8 channels, and sample rates 8,000–192,000 Hz. Extensible WAV support is limited to explicit 16-bit PCM. Inconsistent chunk sizes, padding, byte rate or frame alignment, unsupported encodings, nonfinite floats, and incomplete raw PCM16 samples return a decoding error. Re-encode unsupported files before uploading.

Send one WAV file to the pilot API

Explicit server upload

Selecting a file here does not send it. Clicking Send file for verification uploads the selected WAV to the Cloudflare-hosted API. The server processes audio in memory and can store its SHA-256 digest and result metadata in D1. This differs from the local browser demo. Read Privacy & Data Handling: Server API before sending. Do not upload sensitive recordings to this public prototype. Results and confidence are uncalibrated; an unsigned response is normal when signing is unavailable.




The key is used for this request only, never saved by this page, and cleared after the response.

No file sent.

Analyze one WAV locally with WebAssembly

Experimental local runtime

This sandbox downloads a compiled acoustic scorer and runs it in a dedicated browser Worker. Your recording and result stay on this device; no API key or server upload is involved. WAV decoding uses the shared JavaScript decoder. The main demo, pilot API, MCP tools and SDK continue to use the JavaScript scorer. This compiled port does not establish new detection accuracy or a speed improvement. Its decision and confidence fields are uncalibrated, and its verdict does not authenticate a speaker.

Download engine hashes, source link and compilation flags. The module uses at most 128 MiB of WebAssembly linear memory; browser decoding and page memory are additional.



No local analysis yet. Analysis stops after 30 seconds of wall time; cancellation terminates the Worker.

1. Synchronous REST Endpoint: POST /api/v1/verify

REST v1

Inspects uncompressed PCM WAV (8, 16, or 24 bit), float32 WAV, or raw 16 kHz PCM16 audio. Decode MP3, AAC, FLAC, OGG, or WebM before calling this endpoint. Suitable for batch processing, voicemail verification, and post-call auditing.

The file-verification route is POST /api/v1/verify. It accepts limited unauthenticated requests at a lower rate limit; a valid operator-issued bearer key enables the authenticated rate limit. The examples below assume a key has been issued.

For URL input, the pilot operator must configure exact trusted HTTPS source hosts in AUDIO_URL_ALLOWED_HOSTS. Every redirect target is checked against that list. An unset list denies URL fetching; direct audio uploads remain available.

Request: cURL
curl -X POST https://noiseorvoice.com/api/v1/verify \
  -H "Authorization: Bearer $NOISEORVOICE_API_KEY" \
  -F "audio=@synthetic_edgetts_aria.wav" \
  -F "sensitivity=0.75" \
  -F "extract_telemetry=true"

Selected response fields for the repository sample synthetic_edgetts_aria.wav (SHA-256 a2182a4daa125dd49a068db016716788663be138b27712bfb5caad8959f0cea3) using the local JavaScript engine at threshold 0.75. This is a local example, not a live endpoint measurement:

Response: 200 OK
{
  "status": "success",
  "verdict": "SYNTHETIC_DETECTED",
  "confidence_score": 0.999,
  "decision_score": 0.999,
  "score_semantics": "uncalibrated_detection_score",
  "score_calibrated": false,
  "confidence_calibrated": false,
  "scoring_engine": "noiseorvoice-js-dsp/2.4-SPECTRA",
  "threshold_evaluated": 0.75,
  "duration_seconds": 3.5,
  "is_synthetic": true,
  "is_authentic": false,
  "is_conclusive": true,
  "telemetry": {
    "vocoder_phase_incoherence": 0.517,
    "glottal_jitter_variance": 2.4347,
    "rolloff_95_hz": 2219
  },
  "flags": [
    "LOW_ABSOLUTE_LPC_RESIDUAL_SKEW",
    "ELEVATED_COMB_NOTCH_SCORE",
    "ELEVATED_PHASE_CURVATURE_DISPERSION",
    "HIGH_FRACTIONAL_LAG1_VARIABILITY"
  ],
  "attestation": null,
  "signing_status": "unavailable"
}

The example shows selected telemetry keys; actual telemetry includes additional fields. decision_score is the uncalibrated detector output. confidence_score is an uncalibrated display transform, not a probability that the verdict is correct. Thresholds are operating points on this engine's score scale.

2. Proposed Real-Time Streaming WebSocket Contract

DESIGN EXAMPLE

This proposed contract illustrates live telephony (SIP/RTP) and WebRTC integration. No WebSocket service is deployed at stream.noiseorvoice.com. The current SDK streaming helpers make separate HTTP verification calls for chunks; they do not maintain a server-side session or guarantee per-frame latency.

SIP/PBX pipeline design illustration

Local simulation only

Advance a proposed operator-controlled flow. This page does not receive call audio, emulate SIP/RTP transport, upload a file, call an API, or make a detector decision. Every outcome below is hypothetical. No jitter, packet-loss, codec-survival, or timing measurement is shown.

  1. Operator-controlled media gateway
    Receive audio only under the deployment's recording and privacy rules.
  2. Complete utterance buffer
    Wait for enough speech to form a complete recording; this diagram captures none.
  3. Supported WAV encoding
    A real gateway would decode and package PCM WAV within the documented size limit.
  4. One file verification request
    The implemented contract is POST /api/v1/verify for complete recordings. No request is sent here.
  5. Handle response or failure
    Choose a hypothetical response, inconclusive result, or timeout below.
  6. Operator review
    Use independent evidence and human review; a score alone does not authenticate a caller or block access.

Step 1 of 6: Operator-controlled media gateway. No audio or network request is used.

Streaming Protocol Framing
// 1. Client sends session initialization:
> {"action":"init","sample_rate":16000,"channels":1,"format":"pcm16","sensitivity":0.65}
< {"status":"ready","session_id":"<server-generated>"}

// 2. Client sends decoded PCM chunks; framing policy remains to be designed:
> [Binary 640 bytes PCM frame 101]
< {"event":"chunk_received","frame_seq":101}

// 3. A future service would buffer enough speech for a scored utterance:
< {"event":"verification_verdict","utterance_id":"<server-generated>","verdict":"<rule-output>","decision_score":"<uncalibrated>"}

3. Python SDK: Install from Repository

Python 3.9+

From a repository checkout supplied by the operator, run python3 -m pip install -e ./sdk/python. No public PyPI release is established. This SDK method submits a WAV file to the pilot REST endpoint:

Python: verify_file.py
from noiseorvoice import VoiceVerifier

verifier = VoiceVerifier()
result = verifier.verify_file("sample.wav", sensitivity=0.50)
print(result.verdict, result.decision_score)

4. TypeScript SDK: Build from Repository

TypeScript / Node.js

From a repository checkout supplied by the operator, run npm --prefix sdk/typescript ci, npm --prefix sdk/typescript run build, then npm install ./sdk/typescript in the consuming project. No public npm release is established. This SDK method verifies a file through the REST endpoint:

TypeScript: verify-file.ts
import { VoiceVerifier } from '@noiseorvoice/sdk';

const verifier = new VoiceVerifier();
const result = await verifier.verifyFile('sample.wav', { sensitivity: 0.50 });
console.log(result.verdict, result.decision_score);

5. Proposed gRPC Protobuf Contract: noiseorvoice.v1

Proposed RPC

Conceptual Protocol Buffers sketch for a future telecom gateway. It is not a published schema or implemented service; message definitions and error behavior would need to be completed before use:

Illustrative proto sketch
syntax = "proto3";
package noiseorvoice.v1;

service AudioClassificationService {
  rpc StreamVerifyAudio (stream AudioPacket) returns (stream StreamTelemetryResponse);
}

message AudioPacket {
  string session_id = 1;
  uint64 sequence_number = 2;
  bytes pcm_payload = 3;
  uint32 sample_rate = 4;
}

message StreamTelemetryResponse {
  uint64 sequence_number = 1;
  float frame_anomaly_score = 2;
  string stream_status = 3; // "MONITORING", "ANOMALY_SPIKE", "VOICED_LATCHED"
  float phase_dispersion = 4;
  optional string latched_verdict = 5; // e.g. "SYNTHETIC_DETECTED" or "AUTHENTIC_HUMAN"
  optional float latched_decision_score = 6; // uncalibrated
}

6. Proposed Telephony & PBX Integration Patterns

DESIGN EXAMPLES

These sketches show possible telephony adapters. No Twilio, Asterisk, FreeSWITCH, Genesys, SIP proxy, or WebSocket connector is deployed by this repository. A production adapter would need codec decoding, windowed analysis, latency measurement, authentication, and caller consent appropriate to its deployment. The current selected In-the-Wild benchmark does not support an automatic fraud-lockout policy.

Twilio Voice & Flex Media Streams

TwiML & WebSocket

Illustrative TwiML for a connector that an integrator would need to build and host. Twilio sends base64 μ-law audio at 8 kHz, so the adapter must decode and prepare supported PCM before verification. Validate the X-Twilio-Signature header on the WebSocket handshake, and keep API credentials in the connector's server environment rather than stream parameters. See Twilio's message format and security guidance.

<Response>
  <Start>
    <Stream url="wss://your-connector.example.invalid/twilio" />
  </Start>
  <Say>Connecting you to telephone banking.</Say>
  <Dial>+18005550199</Dial>
</Response>

Asterisk PBX AudioSocket Dialplan

extensions.conf

Illustrative Asterisk AudioSocket dialplan for a separately deployed adapter. The adapter must independently authenticate and analyze the stream; this sketch does not change call routing based on an unvalidated detector result:

; Asterisk Dialplan: extensions.conf
[inbound-banking]
exten => _X.,1,Answer()
same => n,AudioSocket(4b9a1d32-84f9-41bc-92a0-1284920bc91a,adapter.example.invalid:9092)
same => n,Dial(PJSIP/agent-pool,30)

In-Line SIP Proxy Gateway

PROPOSED

A future SIP proxy could inspect decoded RTP windows and add verdict headers after validation. No SIP proxy is currently available at a Noise or Voice host.

FreeSWITCH & Genesys AudioHook

PROPOSED

FreeSWITCH and Genesys adapters are proposed integration work. This repository does not contain mod_noiseorvoice or a Genesys AudioHook connector.

7. Noise or Voice Signed Evaluation Receipt

Vendor JSON Format

When a private signing key is configured, the REST response includes an attestation record with an Ed25519 signature and an audio SHA-256 digest. The SDK verifies the signature, the audio hash when audio is supplied, and a caller-configured trusted key pin. A valid signature protects the recorded detector claim; independent evaluation is needed to assess the classification.

An unsigned response reports attestation: null and signing_status: "unavailable". SDK verification reports issuer_trusted only when the verified key matches a pin obtained independently of the receipt.

8. Trust and Data Handling Status

No independent attestation established

No completed independent assurance report is provided for this service. No external audit in progress is established by the available evidence.

Status as of . This is a repository and operator self-report, not third-party assurance. Check the published status record and request current evidence from the operator before sensitive use.

SOC 2

No SOC 2 report established

No completed SOC 2 Type 1 or Type 2 service-auditor report has been provided.

A SOC 2 report is an examination of service-organization controls by a service auditor. See the AICPA illustrative report.

HIPAA and BAA

HIPAA readiness not established

The repository endpoint has no established HIPAA operational compliance evidence. Do not submit protected health information without a separately reviewed deployment and agreement.

No BAA established for this service. No executed business associate agreement has been provided as evidence. HHS explains when a written business associate agreement is required.

GDPR

GDPR assurance not established

No independent GDPR certification or completed operational privacy assessment has been provided. Applicable legal obligations require separate review.

The European Data Protection Board describes certification as a voluntary accountability tool.

Audio and metadata handling in repository code

The verification function processes submitted audio in memory and does not write that audio to the contribution database. Audit rows store an audio digest, verdict, key prefix, and timing metadata; the separate rate-limit table records client IPs. Deployment storage, logs, retention, and deletion procedures need operational review.

Voluntary research contributions are separate: with consent, a microphone recording and limited metrics are stored in the contribution database. The contribution receipt ID authorizes deletion through POST /api/contribution-delete. Keep that ID private. No automatic deletion period is established in this repository.

9. Threat Model & Security Integration Guidelines

Developer Security

When integrating Noise or Voice into security-critical pathways (such as banking wire authorization, call center voice biometrics, or live executive communication), engineering teams must account for the machine learning cat-and-mouse dynamic.

Adversarial Evasion Limits

The current detector uses measurable acoustic features that a future generator or channel transformation could imitate. No measured attacker cost increase is established. Read the threat discussion in our architecture page.

Adversarial Telemetry Flags

The current Cloudflare DSP endpoint may emit these heuristic flags. They describe measured feature conditions, not a proven attack mechanism:

  • INSUFFICIENT_PITCH_PERIODICITY: Too little periodic structure for a conclusive voiced-speech analysis.
  • ELEVATED_PHASE_CURVATURE_DISPERSION: A phase-curvature estimate crossed an internal heuristic threshold.
  • HIGH_FRACTIONAL_LAG1_VARIABILITY: A lag-1 correlation variability estimate crossed an internal heuristic threshold.

10. Local Test and Analysis Commands

Repository Scripts

Run the included tests and analysis scripts from a checkout with their dependencies installed. Results depend on the code version, corpus, and environment:

# 1. Run Python unit and integration tests
python3 -m pytest

# 2. Run automated continuous regression test gate across baseline ledger
python3 scripts/regression_gate.py

# 3. Run acoustic feature discovery script
python3 scripts/discover-acoustic-signatures.py

# 4. Run Python benchmark engine across all 29 verification corpus samples
python3 -m engine.benchmark

# 5. Recompute the 168-trial sweep if the local corpus audio is present
python3 -m engine.benchmark --eval-corpus

# 6. Classify one audio sample; signed receipt requires a configured key
python3 -m engine.cli verify site/audio/samples/human_real_biden_speech.wav

# 7. Verify all 29 audio samples with client-side JavaScript DSP engine
node scripts/test-js-dsp.mjs

# 8. Run full Playwright E2E UI & verification test suite
node scripts/test-e2e.mjs