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.
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.
Interface
Current state
What is available
Browser demo
Public, local analysis
Try it in the browser. Analysis runs on the device; voluntary research contribution is a separate upload action.
POST /api/v1/verify
Deployed pilot route
Limited 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 verifier
Public download
Download 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 SDKs
Private checkout source
Installation requires an operator-supplied repository checkout. No public PyPI or npm package release is established.
WebSocket, gRPC, SIP, telephony, Go, and Rust
Proposed or future designs
No live streaming endpoint, telephony adapter, or released Go/Rust SDK is established here.
Signed receipts
Optional server capability
The currently deployed API is unsigned. Server signing requires a configured private key; the offline Python proof examples show signed receipts separately.
Local C2PA WAV verifier
Standalone development-qualified download
Download 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.
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.
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.
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:
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.
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.
Operator-controlled media gateway Receive audio only under the deployment's recording and privacy rules.
Complete utterance buffer Wait for enough speech to form a complete recording; this diagram captures none.
Supported WAV encoding A real gateway would decode and package PCM WAV within the documented size limit.
One file verification request The implemented contract is POST /api/v1/verify for complete recordings. No request is sent here.
Handle response or failure Choose a hypothetical response, inconclusive result, or timeout below.
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:
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:
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 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