मुझे आर या मैटलैब में सुझाव स्वीकार करने में खुशी हो रही है, लेकिन मैं नीचे प्रस्तुत कोड आर-ही है।
नीचे दी गई ऑडियो फ़ाइल दो लोगों के बीच बातचीत का एक छोटा टुकड़ा है। मेरा लक्ष्य उनके भाषण को विकृत करना है ताकि भावनात्मक सामग्री को पहचान न सके। कठिनाई यह है कि मुझे इस विकृति के लिए कुछ पैरामीट्रिक स्थान की आवश्यकता है जो 1 से 5 तक कहता है, जहां 1 'अत्यधिक पहचान योग्य भावना' है और 5 'गैर-पहचानने योग्य भावना' है। वहाँ तीन तरीके हैं जो मुझे लगा कि मैं आर के साथ इसे प्राप्त करने के लिए उपयोग कर सकता हूं।
पहला दृष्टिकोण शोर को शुरू करके समग्र बुद्धिमत्ता को कम करना था। यह समाधान नीचे प्रस्तुत किया गया है (उसके सुझावों के लिए @ carl-witthoft का धन्यवाद)। यह भाषण की समझदारी और भावनात्मक सामग्री दोनों को कम कर देगा, लेकिन यह बहुत 'गंदा' दृष्टिकोण है - पैरामीट्रिक स्थान प्राप्त करने के लिए इसे सही करना कठिन है, क्योंकि आप जिस एकमात्र पहलू को नियंत्रित कर सकते हैं वह शोर का एक आयाम (वॉल्यूम) है।
require(seewave)
require(tuneR)
require(signal)
h <- readWave("happy.wav")
h <- cutw(h.norm,f=44100,from=0,to=2)#cut down to 2 sec
n <- noisew(d=2,f=44100)#create 2-second white noise
h.n <- h + n #combine audio wave with noise
oscillo(h.n,f=44100)#visualize wave with noise(black)
par(new=T)
oscillo(h,f=44100,colwave=2)#visualize original wave(red)
दूसरा दृष्टिकोण किसी भी तरह शोर को समायोजित करना होगा, केवल विशिष्ट आवृत्ति बैंड में भाषण को विकृत करना। मुझे लगा कि मैं मूल ऑडियो तरंग से आयाम लिफाफा निकालकर कर सकता हूं, इस लिफाफे से शोर उत्पन्न कर सकता हूं और फिर शोर को ऑडियो तरंग पर लागू कर सकता हूं। नीचे दिए गए कोड से पता चलता है कि यह कैसे करना है। यह शोर से अलग कुछ करता है, ध्वनि को कर्कश बनाता है, लेकिन यह उसी बिंदु पर वापस जाता है - कि मैं केवल यहां शोर के आयाम को बदलने में सक्षम हूं।
n.env <- setenv(n, h,f=44100)#set envelope of noise 'n'
h.n.env <- h + n.env #combine audio wave with 'envelope noise'
par(mfrow=c(1,2))
spectro(h,f=44100,flim=c(0,10),scale=F)#spectrogram of normal wave (left)
spectro(h.n.env,f=44100,flim=c(0,10),scale=F,flab="")#spectrogram of wave with 'envelope noise' (right)
अंतिम दृष्टिकोण इसे हल करने की कुंजी हो सकता है, लेकिन यह काफी मुश्किल है। शैनन एट अल द्वारा विज्ञान में प्रकाशित रिपोर्ट पेपर में मुझे यह विधि मिली । (1996) । वे वर्णक्रमीय कमी के काफी पेचीदा पैटर्न का इस्तेमाल करते थे, जिससे कुछ ऐसा प्राप्त होता था जो शायद काफी रोबोट लगता है। लेकिन एक ही समय में, वर्णन से, मुझे लगता है कि वे समाधान पा सकते हैं जो मेरी समस्या का जवाब दे सकता है। पाठ और नोट संख्या 7 में दूसरे पैराग्राफ में महत्वपूर्ण जानकारी सन्दर्भ और नोट्स में है- पूरी विधि वहाँ वर्णित है। अब तक इसे दोहराने के मेरे प्रयास असफल रहे हैं, लेकिन नीचे दिया गया कोड मैं खोजने में कामयाब रहा, साथ में मेरी व्याख्या कि प्रक्रिया कैसे होनी चाहिए। मुझे लगता है कि लगभग सभी पहेलियाँ हैं, लेकिन मैं किसी भी तरह पूरी तस्वीर अभी तक प्राप्त नहीं कर सकता।
###signal was passed through preemphasis filter to whiten the spectrum
#low-pass below 1200Hz, -6 dB per octave
h.f <- ffilter(h,to=1200)#low-pass filter up to 1200 Hz (but -6dB?)
###then signal was split into frequency bands (third-order elliptical IIR filters)
#adjacent filters overlapped at the point at which the output from each filter
#was 15dB down from the level in the pass-band
#I have just a bunch of options I've found in 'signal'
ellip()#generate an Elliptic or Cauer filter
decimate()#downsample a signal by a factor, using an FIR or IIR filter
FilterOfOrder()#IIR filter specifications, including order, frequency cutoff, type...
cutspec()#This function can be used to cut a specific part of a frequency spectrum
###amplitude envelope was extracted from each band by half-wave rectification
#and low-pass filtering
###low-pass filters (elliptical IIR filters) with cut-off frequencies of:
#16, 50, 160 and 500 Hz (-6 dB per octave) were used to extract the envelope
###envelope signal was then used to modulate white noise, which was then
#spectrally limited by the same bandpass filter used for the original signal
तो परिणाम कैसा होना चाहिए? यह कर्कशता के बीच कुछ होना चाहिए, एक शोर खुर, लेकिन इतना रोबोट नहीं। यह अच्छा होगा अगर बातचीत कुछ समझदारी से आगे बढ़े। मुझे पता है - यह सब थोड़ा व्यक्तिपरक है, लेकिन इसके बारे में चिंता न करें - जंगली सुझाव और ढीली व्याख्याएं बहुत स्वागत योग्य हैं।
संदर्भ:
- शैनन, आरवी, ज़ेंग, एफजी, कामथ, वी।, वायगोंस्की, जे।, और एकेलिड, एम। (1995)। मुख्य रूप से लौकिक संकेतों के साथ भाषण मान्यता। विज्ञान , 270 (5234), 303. http://www.cogsci.msu.edu/DSS/2007-2008/Shannon/temporal_cues.pdf से डाउनलोड करें
noisy <- audio + k*white_noise
कश्मीर के मूल्यों की एक किस्म के लिए बस नहीं कर रहा है तुम क्या चाहते हो? ध्यान में रखते हुए, निश्चित रूप से, कि "समझदारी" अत्यधिक व्यक्तिपरक है। ओह, और आप शायद और एक ही यादृच्छिक मूल्य फ़ाइल के white_noise
बीच झूठी सहसंबंध के कारण किसी भी संयोग प्रभाव से बचने के लिए कुछ दर्जन अलग-अलग नमूने चाहते हैं । audio
noise