arasında wav'ı kaydetmeden işlevler arasında düzenlenen wav nasıl geçirilir?
Aug 18 2020
2 kişiden oluşan bir wav görüşmem var (müşteri ve teknik destek) 1 sesi çıkaran, 10 saniyeyi kesen ve onu gömülmeye dönüştüren 3 ayrı işleve sahibim.
def get_customer_voice(file):
print('getting customer voice only')
wav = wf.read(file)
ch = wav[1].shape[1]#customer voice always in 1st track
sr = wav[0]
c1 = wav[1][:,1]
#print('c0 %i'%c0.size)
if ch==1:
exit()
vad = VoiceActivityDetection()
vad.process(c1)
voice_samples = vad.get_voice_samples()
#this is trouble - how to pass it without saving anywhere as wav?
wf.write('%s_customer.wav'%file,sr,voice_samples)
Aşağıdaki işlev, yukarıdaki işlevden 10 saniyelik wav dosyasını keser.
import sys
from pydub import AudioSegment
def get_customer_voice_10_seconds(file):
voice = AudioSegment.from_wav(file)
new_voice = voice[0:10000]
file = str(file) + '_10seconds.wav'
new_voice.export(file, format='wav')
if __name__ == '__main__':
if len(sys.argv) < 2:
print('give wav file to process!')
else:
print(sys.argv)
get_customer_voice_10_seconds(sys.argv[1])
bunu bir dizine kaydetmeden wav veya başka bir format olarak nasıl geçirebilirim? Rest api'de kullanılacak, bu wav'ı nereye kaydedeceğini bilmiyorum, bu yüzden tercihen bir şekilde geçirilmelidir.
Yanıtlar
1 ERJAN Aug 20 2020 at 04:02
Bunu anladım - aşağıdaki işlev kaydetmeden, arabelleğe almadan çalışır. Bir wav dosyası alır ve düzenler ve doğrudan matematik gömme işlevine gönderir:
def get_customer_voice_and_cutting_10_seconds_embedding(file):
print('getting customer voice only')
wav = read(file)
ch = wav[1].shape[1]
sr = wav[0]
c1 = wav[1][:,1]
vad = VoiceActivityDetection()
vad.process(c1)
voice_samples = vad.get_voice_samples()
audio_segment = AudioSegment(voice_samples.tobytes(), frame_rate=sr,sample_width=voice_samples.dtype.itemsize, channels=1)
audio_segment = audio_segment[0:10000]
file = str(file) + '_10seconds.wav'
return get_embedding(file)
Anahtar, Ses segmentindeki tobyte () 'dır, sadece hepsini 1 parçada bir araya getirir
Gene Simmons, KISS Çizgi Romanlarının Potansiyel Olarak "İnsanlığı Yeniden Yaratabileceğini" Söyledi
Nicole Kidman, Michael Keaton ve Val Kilmer'in Batman Olarak Paylaştığı Bu 1 Çekici Özelliğe Bayıldı
Charly Reynolds Yakın Zamandaki Vokal Kord Ameliyatını Açıkladı: 'Şarkı Söylemekte Sorun Yaşıyordum'
Kevin Jonas'ın Kızı Alena, Doğum Günü Fotoğrafında Büyümüş Görünüyor: '9 Yaşında Gerçek Hissetmiyor'