comment passer le wav édité entre les fonctions sans enregistrer le wav entre les deux?
J'ai une conversation wav de 2 personnes (support client et technique) J'ai 3 fonctions distinctes qui extraient 1 voix, coupent 10 secondes et la transforment en intégration.
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)
La fonction ci-dessous coupe 10 secondes de fichier wav à partir de la fonction ci-dessus.
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])
comment le passer au format wav ou autre sans l'enregistrer dans un répertoire? Il doit être utilisé dans l'api de repos, je ne sais pas où il sauvera ce wav, donc de préférence, il devrait être passé d'une manière ou d'une autre.
Réponses
Je l'ai compris - la fonction ci-dessous fonctionne simplement sans sauvegarde, tampon, etc. Elle reçoit un fichier wav, le modifie et l'envoie directement à la fonction d'intégration get math:
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)
la clé est tobytes () dans le segment Audio, il les assemble simplement tous ensemble dans 1 piste à nouveau