Python "Typeerror arrays to stack must be passed as a "sequence" type such as list or tuple." hatası

dorukmacdo

Hectopat
Katılım
2 Şubat 2021
Mesajlar
148
Makaleler
2
Daha fazla  
Cinsiyet
Erkek
Merhaba aşğıda proje dosyalarımı paylaştım Python sürümüm 3.10.11 bu hatanın çözümünü bilen var mı?

Hata:

Exception has occurred: Typeerror arrays to stack must be passed as a "sequence" type such as list or tuple. File "/Users/dorukmacdo/Desktop/STD5_SES_ESLEME/main.py", line 5, in find_klaket_start_time audio_array = audio_clip.to_soundarray() File "/Users/dorukmacdo/Desktop/STD5_SES_ESLEME/main.py", line 23, in synchronize_audio klaket_start_time = find_klaket_start_time(audio_clip, klaket_sound) File "/Users/dorukmacdo/Desktop/STD5_SES_ESLEME/main.py", line 52, in synchronize_audio(clip_path, audio_path, klaket_path, output_path) TypeError: arrays to stack must be passed as a "sequence" type such as list or tuple.

Proje: Project.zip

Kod: Pastebin.com - Locked Paste
Şifre: Vgek4vpbag
 
Son düzenleme:
Kod:
import numpy as np
import moviepy.editor as mp

def find_klaket_start_time(audio_clip, klaket_sound):
    audio_array = np.array(audio_clip.to_soundarray())
    klaket_array = np.array(klaket_sound.to_soundarray())

    for t in range(len(audio_array) - len(klaket_array)):
        if np.array_equal(audio_array[t:t+len(klaket_array)], klaket_array):
            return t / audio_clip.fps

    return None

def synchronize_audio(clip_path, audio_path, klaket_path, output_path):
    # Video klibi yükle
    video_clip = mp.VideoFileClip(clip_path)

    # Ses kaydını yükle
    audio_clip = mp.AudioFileClip(audio_path)

    # Klaket sesini yükle ve klip sesine uygun uzunluğa kes
    klaket_sound = mp.AudioFileClip(klaket_path)
    klaket_start_time = find_klaket_start_time(audio_clip, klaket_sound)

    if klaket_start_time is None:
        raise ValueError("Klaket sesi klip veya ses kaydında bulunamadı!")

    # Klaket sesini ses kaydı ile eşzamanlı olarak çal
    audio_start_time = klaket_start_time - klaket_sound.duration / 2
    final_audio = mp.CompositeAudioClip([
        audio_clip.subclip(audio_start_time, audio_start_time + video_clip.duration),
        klaket_sound
    ])

    # Yeni .mp4 dosyasını oluştur
    final_clip = video_clip.set_audio(final_audio)
    final_clip.write_videofile(output_path, codec='libx264', audio_codec='aac')

    # Belleği temizle
    video_clip.reader.close()
    audio_clip.reader.close_proc()
    klaket_sound.reader.close_proc()

# Örnek kullanım
clip_path = "klip.mp4"
klaket_path = "klaket.wav"
audio_path = "ses.wav"
output_path = "final.mp4"

synchronize_audio(clip_path, audio_path, klaket_path, output_path)
 
Oynatılacak medyaların bir listesi (veya isimleri) yok. Ses ve görüntü medyaları için bir script anladığım kadar.

Bu kod, klaket sesinin klip ve ses kaydında eşleştirilmesini, klip ve ses kaydında klaket sesinin var olup olmadığının kontrol edilmesini ve klip sesinin klaket sesiyle eşleştirildikten sonra silinmesini sağlamak için yazdım ama hata alıyorum yardım edebilir misiniz?
 
Şu haliyle tam anlayamadım kodu ama yapmak istediğiniz şeyi yapar gibi gözükmüyor.

Yapmak istediğiniz şeyi "kendi cümlelerinizle" açıklayabilir misiniz?

Şimdi 1 tane klaket sesi var dostum ve 1 tane klip 1 tanede ses kaydı var ikisinde de klaket sesi var klipte ve ses kaydında klaket sesini arayacak klip ve ses kaydındaki klaket sesini aynı anda çalmasını yani eş zamanda ses kaydının olmasını yapacak ardından klipin orijinal sesini silip yerini ayarladığı ses kaydını koyup bize yeni bir. MP4 dosyası verecek.
 
Sesi atma imkanınız var mı?

Python:
import numpy as np
import librosa
from scipy.signal import correlate

main_audio, sr_main = librosa.load('search.wav', sr=None)

target_audio, sr_target = librosa.load('klaket.mp3', sr=None)

main_audio /= np.max(np.abs(main_audio))
target_audio /= np.max(np.abs(target_audio))

correlation = correlate(main_audio, target_audio, mode='valid')

max_correlation_value = np.max(correlation)
max_correlation_index = np.argmax(correlation)

start_time_seconds = max_correlation_index / sr_main

print(f"En yüksek korelasyon değeri: {max_correlation_value}")
print(f"En yüksek korelasyonun başladığı saniye: {start_time_seconds}")

threshold = 0.7
if max_correlation_value > threshold:
    print("Aranan ses dosyası bulundu!")
else:
    print("Aranan ses dosyası bulunamadı.")
 
Son düzenleme:

Technopat Haberler

Yeni konular

Yeni mesajlar

Geri
Yukarı