Python TypeError - AudioSegment/ library : PyDub

Fermé
lano - Modifié le 13 mai 2023 à 10:22
hypothetix Messages postés 197 Date d'inscription dimanche 19 janvier 2020 Statut Membre Dernière intervention 24 octobre 2024 - 13 mai 2023 à 20:02

Bonjour,

J'ai codé un script python : 

 
import random
import numpy as np
from pydub import AudioSegment

# Génère un tableau de 10 secondes avec un bruit aléatoire
duration = 10 # en secondes
sample_rate = 44100 # Hz
frequency = 440 # Hz
amplitude = 5000 # 0-32767 (16 bits)
white_noise = np.random.normal(scale=0.1, size=int(duration * sample_rate))
sine_wave = amplitude * np.sin(2 * np.pi * frequency * np.arange(sample_rate * duration) / sample_rate)
audio_array = white_noise + sine_wave
audio_array = np.int16(audio_array * (32767 / np.max(np.abs(audio_array))))

# Convertit le tableau audio en fichier audio
audio = AudioSegment(
    audio_data=audio_array.tobytes(),
    sample_width=2,
    frame_rate=sample_rate,
    channels=1
)

# Exporte le fichier audio en format MP3
filename = "audio_random.mp3"
audio.export(filename, format="mp3")
print("Fichier audio généré et exporté en format MP3 :", filename)

Seulement quand je l'execute voici ce qui s'affiche : 
File "C:\Users\*\AppData\Local\Programs\Python\Python310\lib\site-packages\pydub\audio_segment.py", line 198, in __init__
    if len(data) % (self.sample_width * self.channels) != 0:
TypeError: object of type 'NoneType' has no len()

Je pense que le soucis vient directement du script PyDub ou de la manière dont je l'execute. 

Pouvez vous m'aider svp.

edit: ajout du langage dans les balises de code
Windows / Chrome 113.0.0.0

2 réponses

jordane45 Messages postés 38367 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 2 janvier 2025 4 721
13 mai 2023 à 10:25

Bonjour

As-tu vérifié ce que contenait ta variable audio_array ?


0

Qu'entend tu par là, je me suis référé a ce que j'ai trouvé sur l'utilisation de PyDub.

0
hypothetix Messages postés 197 Date d'inscription dimanche 19 janvier 2020 Statut Membre Dernière intervention 24 octobre 2024 55
13 mai 2023 à 20:02

Bonsoir,

Simple erreur de syntaxe en ligne 18 il faut mettre:

     data=audio_array.tobytes(),


0