ffmpeg下载
链接:https://www.gyan.dev/ffmpeg/builds/ffmpeg-git-full.7z
生成10秒曲子代码 好难听
from pydub import AudioSegment
import numpy as np
# Helper function to create a 10-second melody segment
def create_melody_segment(sample_rate=22050, style='guofeng', duration=10):
# Initialize the audio stream
audio = np.zeros((duration * sample_rate, 2), dtype=np.float32)
# Define scale: Pentatonic for Guofeng, Chromatic for Hip-hop
scale = [0, 2, 4, 7, 9] if style == 'guofeng' else list(range(12))
# Set tempo (beats per minute)
bpm = 120 if style == 'guofeng' else 90
# Calculate beat duration
beat_duration = sample_rate * 60 // bpm
# Function to add a note
def add_note(note, start, end, volume=1.0):
frequency = 440 * (2 ** (note / 12))
t = np.linspace(0, end - start, int((end - start) * sample_rate), False)
note_audio = np.sin(2 * np.pi * frequency * t) * volume
note_audio_length = len(note_audio)
audio_length = end - start
if note_audio_length < audio_length:
note_audio = np.pad(note_audio, (0, audio_length - note_audio_length), 'constant')
elif note_audio_length > audio_length:
note_audio = note_audio[:audio_length]
audio[start:end, :] += note_audio[:, np.newaxis]
# Create the melody segment
current_position = 0
while current_position + beat_duration < len(audio):
if np.random.rand() > 0.3: # Add a note 70% of the time
note = np.random.choice(scale) + 12 * np.random.randint(1, 3) # Choose octave
start = current_position
end = start + beat_duration
add_note(note, start, end, volume=0.5)
current_position += beat_duration
return audio
# Generate a 10-second melody segment
style = 'guofeng'
melody_segment = create_melody_segment(style=style)
# Convert the numpy array to audio segment
audio_segment = AudioSegment(
melody_segment.tobytes(),
frame_rate=22050,
sample_width=melody_segment.dtype.itemsize,
channels=2
)
# Save the audio segment to a file
output_file_segment = 'guofeng_melody_10s.mp3'
audio_segment.export(output_file_segment, format="mp3")
print(output_file_segment)
参考:https://blog.csdn.net/m0_46278037/article/details/113790540
本文来自博客园,作者:__username,转载请注明原文链接:https://www.cnblogs.com/code3/p/17936759