Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

AudioFrequencyConverter silently turns floating-point WAV input into silence

Aperta Adatta ai principianti
#2,932 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 2 giorni

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
86/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
numpy, python

Direzione di ricerca

Inizia in pyrit/converter/audio_frequency_converter.py, al cast immediatamente prima di wavfile.write, e riproduci il problema tramite convert_async con l’esempio WAV float32 fornito. Verifica che una conversione zero-shift non produca più un output composto interamente da zeri e che la forma d’onda in virgola mobile venga preservata o scalata correttamente a PCM.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Describe the bug

AudioFrequencyConverter reads floating-point WAV data successfully, but casts the shifted samples directly to int16 without scaling. A valid floating-point signal whose samples have magnitude below 1 is therefore written as all-zero audio. Conversion returns successfully, so the caller receives a silent artifact rather than an error. Even shift_value=0 loses the signal.

The cast is in pyrit/converter/audio_frequency_converter.py, immediately before wavfile.write. Existing success tests exercise int16 data. This differs from #2356, which fixed stereo broadcasting.

Steps/Code to Reproduce

Run from an environment with PyRIT installed:

import asyncio
import tempfile
from pathlib import Path

import numpy as np
from scipy.io import wavfile

from pyrit.converter import AudioFrequencyConverter
from pyrit.memory import CentralMemory, SQLiteMemory


async def main_async():
    with tempfile.TemporaryDirectory() as directory:
        memory = SQLiteMemory(db_path=':memory:')
        memory.results_path = directory
        CentralMemory.set_memory_instance(memory)
        try:
            source = Path(directory) / 'float.wav'
            samples = np.array([0.0, 0.5, -0.5, 0.25], dtype=np.float32)
            wavfile.write(source, 8000, samples)
            result = await AudioFrequencyConverter(shift_value=0).convert_async(prompt=str(source))
            rate, output = wavfile.read(result.output_text)
            print('frequency:', output.dtype, output.tolist())
        finally:
            memory.dispose_engine()


asyncio.run(main_async())
Expected Results

A zero frequency shift preserves the input waveform and amplitude. Floating-point samples should either retain their representation or be correctly scaled if converted to PCM; silently truncating them is incorrect.

Actual Results
frequency: int16 [0, 0, 0, 0]

The input is float32 [0.0, 0.5, -0.5, 0.25].

Versions

Linux, Python 3.12.3, PyRIT 1.2.0.dev0 at 8934a3c4, NumPy 2.5.3, SciPy 1.18.1. Reproduced locally through the public convert_async methods with real WAV files; no model or external service is used.

Lingua principale
Python
Stelle
4.5k
Fork
896
Merge medio
2g 22h
PR unite (30g)
230

Preparare l'ambiente

Non abbiamo ancora controllato i file di configurazione di questo progetto. Parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di microsoft/PyRIT

Tutte le issue di microsoft/PyRIT

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.