AudioFrequencyConverter silently turns floating-point WAV input into silence
Les mainteneurs répondent en général sous 2 jours
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 86/100
- Type d'issue
- Bug
- Clarté
- Clairement spécifiée
- Activité
- Active
- Stack technique
- numpy, python
- Domaine
- audio-video-rtc
Piste de recherche
Commencez dans pyrit/converter/audio_frequency_converter.py, au cast immédiatement avant wavfile.write, et reproduisez le problème via convert_async avec l’exemple WAV float32 fourni. Vérifiez qu’une conversion zero-shift ne produit plus une sortie entièrement composée de zéros et que la forme d’onde en virgule flottante est préservée ou correctement mise à l’échelle vers PCM.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
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.
- Langage dominant
- Python
- Étoiles
- 4.7k
- Forks
- 1k
- Merge moyen
- 2 j 2 h
- PR mergées (30 j)
- 439
Préparer son environnement
Lance le conteneur de développement du projet dans votre navigateur, avec votre propre compte GitHub.
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Aucun guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de microsoft/PyRIT
-
BUG: LLMGenericTextConverter identifier changes between processes for set-valued template parametersOuverteBug: triage
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
Les mainteneurs répondent en général sous 2 jours
-
Bug: triage
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
Les mainteneurs répondent en général sous 2 jours
-
Description-only preset edits split comma-containing exact goals into separate goalsPeut-être pris @MRX-72 l’a pris il y a 1 jour. Ouvertehelp wanted
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
Les mainteneurs répondent en général sous 2 jours
-
GUI rejects valid empty-string SearchReplaceConverter settings, preventing deletion convertersPeut-être pris @Darshika140 l’a pris aujourd’hui. Ouvertehelp wanted
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
microsoft/PyRIT#3749 · 3 commentaires · 1 personne assignée ·
Les mainteneurs répondent en général sous 2 jours
-
HTML scenario export replaces an intentionally empty converted message with the original textPeut-être pris @VISHNU0906 l’a pris il y a 1 jour. Ouvertehelp wanted
Difficulté 2/5 1-3 heures Accessibilité débutants 77/100
microsoft/PyRIT#3741 · 1 commentaire · 1 personne assignée ·
Les mainteneurs répondent en général sous 2 jours
Toutes les issues de microsoft/PyRIT
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
earthtojake/text-to-cad#758 ·
Les mainteneurs répondent en général sous 1 jour
-
domain:upgrades enhancement needs-triage
Difficulté 2/5 1-3 heures Accessibilité débutants 66/100
gke-labs/kube-agents#4634 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
agardnerIT/opamp-server-py#116 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
Les mainteneurs répondent en général sous 1 jour
-
enhancement good first issue
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
elviskahoro/sdk-python-attio#144 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour