本發(fā)明涉及音頻處理
技術(shù)領(lǐng)域:
,尤其涉及一種歌詞生成方法及裝置。
背景技術(shù):
:眾所周知,歌曲由歌詞和樂曲組合而成。歌詞作為詩歌的一種表現(xiàn)形式,是歌曲的本意所在。隨著科技的不斷發(fā)展,機器自動生成歌詞的技術(shù)也逐漸成熟。目前,可以模仿現(xiàn)有歌曲的歌詞結(jié)構(gòu)生成新的歌詞,保證生成的歌詞與原歌詞字?jǐn)?shù)一致,使生成的歌詞能夠按照原來歌曲的樂曲進行演唱。因此,在給定樂曲的情況下,如何生成與樂曲匹配的歌詞成為極具挑戰(zhàn)的技術(shù)問題。現(xiàn)有基于循環(huán)神經(jīng)網(wǎng)絡(luò)(RecurrentNeuralNetwork,RNN)語言模型的歌詞生成技術(shù),需要先給定歌詞的開始部分,將歌詞的開始部分作為輸入,利用RNN語言模型輸出字典里所有字的概率,將概率最大的字作為下一個字。接著將新生成的字作為輸入繼續(xù)生成下一個字。重復(fù)上述步驟,直至生成最后一個字,歌詞生成過程結(jié)束。然而,現(xiàn)有基于語言模型的歌詞生成技術(shù)難以保證生成歌詞與用戶所需歌詞主旨的相關(guān)性,生成的歌詞之間的邏輯關(guān)聯(lián)性低。技術(shù)實現(xiàn)要素:本發(fā)明的目的旨在至少在一定程度上解決上述的技術(shù)問題之一。為此,本發(fā)明的第一個目的在于提出一種歌詞生成方法,該方法能夠準(zhǔn)確控制生成的每句歌詞的長度,提高生成的歌詞與主題詞之間的相關(guān)性以及句子與句子之間的邏輯關(guān)聯(lián)性。本發(fā)明的第二個目的在于提出一種歌詞生成裝置。本發(fā)明的第三個目的在于提出一種終端。本發(fā)明的第四個目的在于提出一種非臨時性計算機可讀存儲介質(zhì)。本發(fā)明的第五個目的在于提出一種計算機程序產(chǎn)品。為了實現(xiàn)上述目的,本發(fā)明第一方面實施例提出了一種歌詞生成方法,包括:S1、獲取源歌詞,并確定源歌詞中句子的數(shù)量S以及每個句子的長度;S2、基于雙向時間遞歸神經(jīng)網(wǎng)絡(luò)LSTM模型將待生成句子的主題詞、待生成句子的長度和已生成的歌詞組成的輸入序列進行編碼,以將輸入序列轉(zhuǎn)換為一組隱狀態(tài);S3、基于包含內(nèi)部狀態(tài)向量的時間遞歸神經(jīng)網(wǎng)絡(luò)LSTM模型對隱狀態(tài)進行解碼,以生成待生成句子的歌詞;S4、重復(fù)步驟S2和S3,以生成S句歌詞。本發(fā)明第一方面實施例提出的歌詞生成方法,通過確定源歌詞中句子的數(shù)量和每個句子的長度,基于雙向時間遞歸神經(jīng)網(wǎng)絡(luò)模型將待生成句子的主題詞、長度和已生成的歌詞組成的輸入序列進行編碼轉(zhuǎn)換為一組隱狀態(tài),并基于包含內(nèi)部狀態(tài)向量的時間遞歸神經(jīng)網(wǎng)絡(luò)模型對隱狀態(tài)進行解碼生成待生成句子的歌詞,進而生成與源歌詞句子數(shù)量相同的新的歌詞。由此,能夠準(zhǔn)確控制生成的每句歌詞的長度,通過為每句話分配主題詞提高生成的歌詞與主題詞之間的相關(guān)性,并利用已生成的句子生成后續(xù)的句子,提高句子與句子之間的邏輯關(guān)聯(lián)性。為了實現(xiàn)上述目的,本發(fā)明第二方面實施例提出了一種歌詞生成裝置,包括:確定模塊,用于獲取源歌詞,并確定源歌詞中句子的數(shù)量S以及每個句子的長度;轉(zhuǎn)換模塊,用于基于雙向時間遞歸神經(jīng)網(wǎng)絡(luò)LSTM模型將待生成句子的主題詞、待生成句子的長度和已生成的組成的輸入序列進行編碼,以將輸入序列轉(zhuǎn)換為一組隱狀態(tài);生成模塊,用于基于包含內(nèi)部狀態(tài)向量的時間遞歸神經(jīng)網(wǎng)絡(luò)LSTM模型對隱狀態(tài)進行解碼,以生成待生成句子的歌詞。本發(fā)明第二方面實施例提出的歌詞生成裝置,通過確定源歌詞中句子的數(shù)量和每個句子的長度,基于雙向時間遞歸神經(jīng)網(wǎng)絡(luò)模型將待生成句子的主題詞、長度和已生成的歌詞組成的輸入序列進行編碼轉(zhuǎn)換為一組隱狀態(tài),并基于包含內(nèi)部狀態(tài)向量的時間遞歸神經(jīng)網(wǎng)絡(luò)模型對隱狀態(tài)進行解碼生成待生成句子的歌詞,進而生成與源歌詞句子數(shù)量相同的新的歌詞。由此,能夠準(zhǔn)確控制生成的每句歌詞的長度,通過為每句話分配主題詞提高生成的歌詞與主題詞之間的相關(guān)性,并利用已生成的句子生成后續(xù)的句子,提高句子與句子之間的邏輯關(guān)聯(lián)性。為了實現(xiàn)上述目的,本發(fā)明第三方面實施例提出了一種終端,包括:處理器;用于存儲處理器可執(zhí)行指令的存儲器。其中,處理器被配置為執(zhí)行以下步驟:S1’、獲取源歌詞,并確定源歌詞中句子的數(shù)量S以及每個句子的長度;S2’、基于雙向時間遞歸神經(jīng)網(wǎng)絡(luò)LSTM模型將待生成句子的主題詞、待生成句子的長度和已生成的歌詞組成的輸入序列進行編碼,以將輸入序列轉(zhuǎn)換為一組隱狀態(tài);S3’、基于包含內(nèi)部狀態(tài)向量的時間遞歸神經(jīng)網(wǎng)絡(luò)LSTM模型對隱狀態(tài)進行解碼,以生成待生成句子的歌詞;S4’、重復(fù)步驟S2’和S3’,以生成S句歌詞。本發(fā)明第三方面實施例提出的終端,通過確定源歌詞中句子的數(shù)量和每個句子的長度,基于雙向時間遞歸神經(jīng)網(wǎng)絡(luò)模型將待生成句子的主題詞、長度和已生成的歌詞組成的輸入序列進行編碼轉(zhuǎn)換為一組隱狀態(tài),并基于包含內(nèi)部狀態(tài)向量的時間遞歸神經(jīng)網(wǎng)絡(luò)模型對隱狀態(tài)進行解碼生成待生成句子的歌詞,進而生成與源歌詞句子數(shù)量相同的新的歌詞。由此,能夠準(zhǔn)確控制生成的每句歌詞的長度,通過為每句話分配主題詞提高生成的歌詞與主題詞之間的相關(guān)性,并利用已生成的句子生成后續(xù)的句子,提高句子與句子之間的邏輯關(guān)聯(lián)性。為了實現(xiàn)上述目的,本發(fā)明第四方面實施例提出了一種非臨時性計算機可讀存儲介質(zhì),用于存儲一個或多個程序,當(dāng)存儲介質(zhì)中的指令由移動終端的處理器執(zhí)行時,使得移動終端能夠執(zhí)行第一方面實施例提出的歌詞生成方法。本發(fā)明第四方面實施例提出的非臨時性計算機可讀存儲介質(zhì),通過確定源歌詞中句子的數(shù)量和每個句子的長度,基于雙向時間遞歸神經(jīng)網(wǎng)絡(luò)模型將待生成句子的主題詞、長度和已生成的歌詞組成的輸入序列進行編碼轉(zhuǎn)換為一組隱狀態(tài),并基于包含內(nèi)部狀態(tài)向量的時間遞歸神經(jīng)網(wǎng)絡(luò)模型對隱狀態(tài)進行解碼生成待生成句子的歌詞,進而生成與源歌詞句子數(shù)量相同的新的歌詞。由此,能夠準(zhǔn)確控制生成的每句歌詞的長度,通過為每句話分配主題詞提高生成的歌詞與主題詞之間的相關(guān)性,并利用已生成的句子生成后續(xù)的句子,提高句子與句子之間的邏輯關(guān)聯(lián)性。為了實現(xiàn)上述目的,本發(fā)明第五方面實施例提出了一種計算機程序產(chǎn)品,當(dāng)計算機程序產(chǎn)品中的指令被處理器執(zhí)行時,執(zhí)行第一方面實施例提出的歌詞生成方法。本發(fā)明第五方面實施例提出的計算機程序產(chǎn)品,通過確定源歌詞中句子的數(shù)量和每個句子的長度,基于雙向時間遞歸神經(jīng)網(wǎng)絡(luò)模型將待生成句子的主題詞、長度和已生成的歌詞組成的輸入序列進行編碼轉(zhuǎn)換為一組隱狀態(tài),并基于包含內(nèi)部狀態(tài)向量的時間遞歸神經(jīng)網(wǎng)絡(luò)模型對隱狀態(tài)進行解碼生成待生成句子的歌詞,進而生成與源歌詞句子數(shù)量相同的新的歌詞。由此,能夠準(zhǔn)確控制生成的每句歌詞的長度,通過為每句話分配主題詞提高生成的歌詞與主題詞之間的相關(guān)性,并利用已生成的句子生成后續(xù)的句子,提高句子與句子之間的邏輯關(guān)聯(lián)性。附圖說明本發(fā)明上述的和/或附加的方面和優(yōu)點從下面結(jié)合附圖對實施例的描述中將變得明顯和容易理解,其中:圖1是本發(fā)明一實施例提出的歌詞生成方法的流程示意圖;圖2是基于LSTM模型進行編解碼生成待生成句子的歌詞的過程示意圖;圖3是基于LSTM模型將輸入序列轉(zhuǎn)換為隱狀態(tài)的流程示意圖;圖4是基于包含內(nèi)部狀態(tài)向量的LSTM模型對隱狀態(tài)進行解碼生成待生成句子的歌詞的流程示意圖;圖5是本發(fā)明另一實施例提出的歌詞生成方法的流程示意圖;圖6是本發(fā)明又一實施例提出的歌詞生成方法的流程示意圖;圖7是本發(fā)明一實施例提出的歌詞生成裝置的結(jié)構(gòu)示意圖;圖8是本發(fā)明另一實施例提出的歌詞生成裝置的結(jié)構(gòu)示意圖;圖9是本發(fā)明又一實施例提出的歌詞生成裝置的結(jié)構(gòu)示意圖;圖10是本發(fā)明還一實施例提出的歌詞生成裝置的結(jié)構(gòu)示意圖;圖11是本發(fā)明再一實施例提出的歌詞生成裝置的結(jié)構(gòu)示意圖。具體實施方式下面詳細(xì)描述本發(fā)明的實施例,所述實施例的示例在附圖中示出,其中自始至終相同或類似的標(biāo)號表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描述的實施例是示例性的,旨在用于解釋本發(fā)明,而不能理解為對本發(fā)明的限制。相反,本發(fā)明的實施例包括落入所附加權(quán)利要求書的精神和內(nèi)涵范圍內(nèi)的所有變化、修改和等同物。隨著科技的不斷發(fā)展,機器自動生成歌詞技術(shù)也逐漸成熟。然而,自動譜曲技術(shù)尚未成熟,仍需作曲家為歌詞譜曲。如果沒有作曲家譜寫樂曲,生成的歌詞則無法成為歌曲被演唱。這種情況下,可以通過為現(xiàn)有歌曲進行填詞的方法來規(guī)避譜曲問題。也就是說,可以模仿現(xiàn)有歌曲的歌詞結(jié)構(gòu)生成新的歌詞,保證生成的歌詞與原歌詞字?jǐn)?shù)一致,使生成的歌詞能夠按照原來歌曲的樂曲進行演唱。因此,在給定樂曲和關(guān)鍵詞的情況下,如何生成與樂曲匹配的歌詞成為極具挑戰(zhàn)的技術(shù)問題?,F(xiàn)有基于RNN語言模型的歌詞生成技術(shù),需要先給定歌詞的開始部分,將歌詞的開始部分作為輸入,利用RNN語言模型輸出字典里所有字的概率,將概率最大的字作為下一個字。接著將新生成的字作為輸入繼續(xù)生成下一個字。重復(fù)上述步驟,直至生成最后一個字,歌詞生成過程結(jié)束。然而,現(xiàn)有基于語言模型的歌詞生成技術(shù)由于需要提供歌詞的開始部分,難以保證歌詞與關(guān)鍵詞的相關(guān)性。由于語言模型能夠記憶的歷史信息有限,可能導(dǎo)致句子之間的邏輯關(guān)聯(lián)性低。另外,由于采用現(xiàn)有技術(shù)生成歌詞無法控制生成內(nèi)容的長度,難以保證生成歌詞的長度與指定樂曲長度的一致性。為了彌補現(xiàn)有歌詞生詞技術(shù)的不足,本發(fā)明提出一種歌詞生成方法及裝置,能夠準(zhǔn)確控制生成的每句歌詞的長度,提高生成的歌詞與主題詞之間的相關(guān)性以及句子與句子之間的邏輯關(guān)聯(lián)性。圖1是本發(fā)明一實施例提出的歌詞生成方法的流程示意圖。如圖1所示,本實施例的歌詞生成方法包括:S1:獲取源歌詞,并確定源歌詞中句子的數(shù)量S以及每個句子的長度。本實施例中,為了生成新的歌詞,首先要獲取源歌詞,并確定源歌詞中所有句子的數(shù)量,記為S;同時獲取源歌詞中每個句子的長度。其中,源歌詞指的是與待使用的樂曲組合成歌曲的歌詞;句子的長度指的是該句子中所包含的字?jǐn)?shù)。本實施例中,為了能夠?qū)⒋褂玫臉非托律傻母柙~組合成歌曲進行演唱,并保證新生成的歌詞與待使用的樂曲匹配,需要先獲取與待使用的樂曲組合成歌曲的源歌詞,并確定源歌詞中句子的數(shù)量以及每個句子的長度。S2:基于雙向時間遞歸神經(jīng)網(wǎng)絡(luò)LSTM模型將待生成句子的主題詞、待生成句子的長度和已生成的歌詞組成的輸入序列進行編碼,以將輸入序列轉(zhuǎn)換為一組隱狀態(tài)。本實施例中,在確定了源歌詞的句子數(shù)量和每個句子的長度之后,即可基于雙向時間遞歸神經(jīng)網(wǎng)絡(luò)(Long-ShortTermMemory,LSTM)模型將待生成句子的主題詞、待生成句子的長度和已生成的歌詞組成的輸入序列進行編碼,以將輸入序列轉(zhuǎn)換為一組隱狀態(tài)。其中,LSTM模型是RNN模型的一種改進模型。在LSTM模型中,利用存儲單元代替RNN模型中的常規(guī)神經(jīng)元,每個存儲單元與一個輸入門、一個輸出門和一個跨越時間步驟無干擾送入自身的內(nèi)部狀態(tài)相關(guān)聯(lián)。相較于RNN模型,LSTM模型具有更強的記憶能力,能夠記住更長的歷史信息。需要說明的是,主題詞是根據(jù)用戶需求預(yù)先分配的與待生成句子相關(guān)的關(guān)鍵詞,可以是單個字,也可以是多個字組詞的詞,對此不作限制。待生成句子的長度與源歌詞中相應(yīng)位置的句子的長度相同,即待生成句子中所包含的字?jǐn)?shù)與源歌詞中相應(yīng)位置的句子所包含的字?jǐn)?shù)相同。本實施例中,首先為待生成句子分配主題詞,并根據(jù)源歌詞的句子長度確定對應(yīng)的待生成歌詞的句子長度。接著,將待生成句子的主題詞、待生成句子的長度,以及已生成的歌詞按照順序組成一個輸入序列,利用雙向LSTM模型對組成的輸入序列進行編碼,以將輸入序列轉(zhuǎn)換為一組隱狀態(tài)。舉例而言,假設(shè)將待生成句子的主題詞、待生成句子的長度和已生成的歌詞按序組合后,形成一個長度為T的輸入序列,記為X=(x1,x2,…,xT)。將該序列輸入至雙向LSTM模型進行編碼,即可獲得一組隱狀態(tài),記為(h1,h2,…,hT)。需要說明的是,在生成第一句待生成句子的歌詞時,由于此前沒有已生成的歌詞,因此,此時只將待生成句子的主題詞和待生成句子的長度組成的輸入序列輸入至LSTM模型進行編碼來將其轉(zhuǎn)換為一組隱狀態(tài)。S3:基于包含內(nèi)部狀態(tài)向量的時間遞歸神經(jīng)網(wǎng)絡(luò)LSTM模型對隱狀態(tài)進行解碼,以生成待生成句子的歌詞。本實施例中,在獲得待生成句子的主題詞、長度和已生成的歌詞組成的輸入序列對應(yīng)的隱狀態(tài)后,基于包含內(nèi)部狀態(tài)向量的LSTM模型對獲得的隱狀態(tài)進行解碼,即可生成待生成句子的歌詞。其中,內(nèi)部狀態(tài)向量是解碼端的LSTM模型自身攜帶的參數(shù),用于生成與輸入的隱狀態(tài)最相關(guān)的字,并在解碼的過程中不斷更新,具體更新過程將在后續(xù)內(nèi)容中給出。作為一種示例,參見圖2,圖2是基于LSTM模型進行編解碼生成待生成句子的歌詞的過程示意圖。如圖2所示,待生成句子的主題詞為“季節(jié)”,待生成句子的長度為“7”,已生成的歌詞為“我一路向北”,按序組成一個輸入序列為“季節(jié)”“7”“我”“一”“路”“向”“北”,該輸入序列的長度為7,記為X=(x1,x2,…,x7)。接著,基于雙向LSTM模型對該長度為7的輸入序列進行編碼,獲得一組隱狀態(tài),記為(h1,h2,…,h7)。隨后,根據(jù)生成第i個字時各個隱狀態(tài)對應(yīng)的注意力得分,基于包含內(nèi)部狀態(tài)向量的LSTM模型對隱狀態(tài)進行解碼,生成第i個字。其中,i為正整數(shù),i=1,2,…,7。圖2中,a7,1,a7,2,…,a7,6,a7,7表示生成第7個字時各個隱狀態(tài)對應(yīng)的注意力得分,加權(quán)求和之后,結(jié)合內(nèi)部狀態(tài)向量S7,基于LSTM模型進行解碼,獲得待生成句子的第7個字y7,即“節(jié)”字。需要說明的是,隱狀態(tài)對應(yīng)的注意力得分是通過計算獲得的,具體計算過程將在后續(xù)內(nèi)容中給出。S4:重復(fù)步驟S2和S3,以生成S句歌詞。本實施例中,在生成當(dāng)前待生成句子的歌詞之后,將其之后待生成的歌詞作為新的待生成句子,并確定待生成句子的主題詞和長度,將新生成的歌詞作為已生成的歌詞,重復(fù)前述步驟S2和S3,直至生成最后一句待生成句子的歌詞,最終獲得S句歌詞。以歌曲《蟲兒飛》為例。為了生成一首能夠使用歌曲《蟲兒飛》的樂曲的新歌詞,需要保證新生成的歌詞與歌曲《蟲兒飛》的歌詞具有相同的歌詞結(jié)構(gòu)。生成新歌詞的具體過程描述如下:首先,需要獲取歌曲《蟲兒飛》的歌詞作為源歌詞。歌曲《蟲兒飛》的歌詞如下所示:黑黑的天空低垂亮亮的繁星相隨蟲兒飛蟲兒飛你在思念誰天上的星星流淚地上的玫瑰枯萎冷風(fēng)吹冷風(fēng)吹只要有你陪通過獲取《蟲兒飛》的源歌詞,可以確定該源歌詞的句子數(shù)量為8句,每個句子的長度分別為7,7,6,5,7,7,6,5。假設(shè)第一句待生成句子的主題詞為“天空”。根據(jù)源歌詞第一個句子的長度,可以確定第一句待生成句子的長度為7。由于待生成句子為第一句,之前沒有已生成的歌詞,故僅將“天空”和“7”組成輸入序列,經(jīng)過雙向LSTM模型進行編碼和包含內(nèi)部狀態(tài)向量的LSTM模型進行解碼之后,即可獲得新歌詞的第一句歌詞“擁抱蔚藍(lán)的天空”。假設(shè)第二句待生成句子的主題詞為“繁星”。根據(jù)源歌詞第二個句子的長度,可以確定第二句待生成句子的長度為7。將第二句待生成句子的主題詞、長度、已生成的歌詞即“擁抱蔚藍(lán)的天空”組成輸入序列,經(jīng)過雙向LSTM模型進行編碼和包含內(nèi)部狀態(tài)向量的LSTM模型進行解碼之后,即可獲得新歌詞的第二句歌詞“有一顆繁星閃爍”。如此重復(fù),即可獲得與源歌詞結(jié)構(gòu)相同的新歌詞的8句歌詞,如下所示:擁抱蔚藍(lán)的天空有一顆繁星閃爍螢火蟲螢火蟲世界多逍遙越過高山和海洋夢想靠在你肩膀任風(fēng)浪任風(fēng)浪迷失了方向需要說明的是,由于本實施例提出的歌詞生成方法采用的是LSTM模型,之后的每一句歌詞均是基于之前所有的歌詞生成的。也就是說,在生成第五句歌詞時,用到了已經(jīng)生成的前四句歌詞;在生成第六句歌詞時,用到了已經(jīng)生成的前五句歌詞。這樣,能夠使句子之間的關(guān)聯(lián)性更強。本發(fā)明實施例提出的歌詞生成方法,通過確定源歌詞中句子的數(shù)量和每個句子的長度,基于雙向時間遞歸神經(jīng)網(wǎng)絡(luò)模型將待生成句子的主題詞、長度和已生成的歌詞組成的輸入序列進行編碼轉(zhuǎn)換為一組隱狀態(tài),并基于包含內(nèi)部狀態(tài)向量的時間遞歸神經(jīng)網(wǎng)絡(luò)模型對隱狀態(tài)進行解碼生成待生成句子的歌詞,進而生成與源歌詞句子數(shù)量相同的新的歌詞。由此,能夠準(zhǔn)確控制生成的每句歌詞的長度,通過為每句話分配主題詞提高生成的歌詞與主題詞之間的相關(guān)性,并利用已生成的句子生成后續(xù)的句子,提高句子與句子之間的邏輯關(guān)聯(lián)性。圖3是基于LSTM模型將輸入序列轉(zhuǎn)換為隱狀態(tài)的流程示意圖。如圖3所示,前述步驟S2具體可以包括以下步驟:S21:基于正向LSTM模型對輸入序列進行正向編碼,以獲取正向隱狀態(tài)。S22:基于反向LSTM模型對輸入序列進行反向編碼,以獲取反向隱狀態(tài)。本實施例中,將待生成句子的主題詞、待生成句子的長度和已生成的歌詞組成的輸入序列輸入至雙向LSTM模型之后,基于正向LSTM模型對輸入序列進行正向編碼生成正向隱狀態(tài);基于反向LSTM模型對輸入序列進行反向編碼生成反向隱狀態(tài)。需要說明的是,本實施例中獲取正向隱狀態(tài)和反向隱狀態(tài)的步驟可以是先后進行的,也可以是同時進行,本發(fā)明對此不作限制。S23:拼接正向隱狀態(tài)和反向隱狀態(tài),以生成隱狀態(tài)。本實施例中,在分別獲得正向隱狀態(tài)和反向隱狀態(tài)之后,拼接獲得的正向隱狀態(tài)和反向隱狀態(tài),生成輸入序列對應(yīng)的一組隱狀態(tài)。本發(fā)明實施例提出的歌詞生成方法,通過基于正向LSTM模型對輸入序列進行正向編碼獲取正向隱狀態(tài),基于反向LSTM模型對輸入序列進行反向編碼獲取反向隱狀態(tài),拼接正向隱狀態(tài)和反向隱狀態(tài)生成隱狀態(tài),能夠同時獲得上文和下文的信息,相較于單向LSTM模型和RNN模型能夠獲得更多的信息,進一步提高歌詞生成的準(zhǔn)確性。圖4是基于包含內(nèi)部狀態(tài)向量的LSTM模型對隱狀態(tài)進行解碼生成待生成句子的歌詞的流程示意圖。如圖4所示,前述步驟S3可以包括以下步驟:S31:獲取隱狀態(tài)對應(yīng)的注意力得分。本實施例中,在獲得輸入序列對應(yīng)的隱狀態(tài)后,繼續(xù)獲取各個隱狀態(tài)對應(yīng)的注意力得分。具體地,可以根據(jù)公式(1)和公式(2)計算獲得隱狀態(tài)對應(yīng)的注意力得分。其中,va、Wa和Ua是在模型訓(xùn)練過程中生成并更新的參數(shù)矩陣。k為正整數(shù),且k=1,2,…,Tx,Tx表示輸入序列X的長度。i、j均為正整數(shù),其中,i=1,2,…,Tx,表示輸入序列X的第i個元素;j=1,2,…,Tx,表示與輸入序列X對應(yīng)的隱狀態(tài)的第j個元素。S32:根據(jù)隱狀態(tài)和隱狀態(tài)對應(yīng)的注意力得分獲得輸入序列的歷史信息向量。本實施例中,在獲得隱狀態(tài)對應(yīng)的注意力得分之后,即可根據(jù)隱狀態(tài)和隱狀態(tài)對應(yīng)的注意力得分獲得輸入序列的歷史信息向量。具體地,可以根據(jù)公式(3)計算獲得輸入序列的歷史信息向量。其中,i、j均為正整數(shù),i=1,2,…,Tx,j=1,2,…,Tx。從公式(3)可以看出,在生成輸入序列X中第i個元素對應(yīng)的歷史信息向量時,將此時各個隱狀態(tài)對應(yīng)的注意力得分分別與相應(yīng)的隱狀態(tài)相乘后相加,即可獲得輸入序列X中第i個元素對應(yīng)的歷史信息向量ci。S33:根據(jù)內(nèi)部狀態(tài)向量、歷史信息向量和前一個字生成當(dāng)前字。本實施例中,在計算獲得輸入序列的歷史信息向量之后,即可根據(jù)內(nèi)部狀態(tài)向量、歷史信息向量和前一個字生成當(dāng)前字。具體地,可以根據(jù)公式(4)計算生成當(dāng)前字。yi=argmaxp(y|si,ci,yi-1)(4)其中,si表示內(nèi)部狀態(tài)向量;ci表示計算所得的歷史信息向量;yi-1表示前一個字,i為正整數(shù),i=1,2,…,待生成句子的長度。S34:將生成的當(dāng)前字組合成待生成句子的歌詞。本實施例中,在生成符合待生成句子的長度的多個字之后,即可將生成的多個字組合成待生成句子的歌詞。舉例而言,假設(shè)待生成句子的長度為7,采用本實施例提出的歌詞生成方法生成的7個字分別為“離”、“開”、“有”、“你”、“的”、“季”和“節(jié)”,則將這7個字組合可以獲得待生成句子的歌詞為“離開有你的季節(jié)”??蛇x地,參見圖5,圖5是本發(fā)明另一實施例提出的歌詞生成方法的流程示意圖。如圖5所示,在根據(jù)內(nèi)部狀態(tài)向量、歷史信息向量和前一個字生成當(dāng)前字之后,還可以包括以下步驟:S35:更新內(nèi)部狀態(tài)向量。本實施例中,在根據(jù)內(nèi)部狀態(tài)向量、歷史信息向量和前一個字生成當(dāng)前字之后,可以對內(nèi)部狀態(tài)向量進行更新,以提高生成字的準(zhǔn)確性。具體地,可以根據(jù)公式(5)更新解碼端LSTM模型的內(nèi)部狀態(tài)向量。si=f(si-1,ci-1,yi)(5)其中,i為正整數(shù),i=1,2,…,待生成句子的長度。需要說明的是,本實施例中的步驟S34和步驟S35可以同時進行,也可以分先后進行,本發(fā)明對此不作限制。本發(fā)明實施例提出的歌詞生成方法,通過獲取隱狀態(tài)對應(yīng)的注意力得分,并根據(jù)注意力得分和對應(yīng)的隱狀態(tài)獲得輸入序列的歷史信息向量,進而根據(jù)內(nèi)部狀態(tài)向量、歷史信息向量和前一個字生成當(dāng)前字,將生成的多個字組合成待生成句子的歌詞,能夠提高字與字之間的關(guān)聯(lián)性,進一步提高歌詞生成的準(zhǔn)確性。圖6是本發(fā)明又一實施例提出的歌詞生成方法的流程示意圖。如圖6所示,基于上述實施例,該歌詞生成方法,還可以包括以下步驟:S5:訓(xùn)練雙向LSTM模型和包含內(nèi)部狀態(tài)向量的LSTM模型。本發(fā)明實施例中,為了能夠利用雙向LSTM模型和包含內(nèi)部狀態(tài)向量的LSTM模型生成歌詞,需要對上述兩個模型進行訓(xùn)練。具體地,訓(xùn)練雙向LSTM模型和包含內(nèi)部狀態(tài)向量的LSTM模型,包括:獲取主題詞樣本和主題詞樣本對應(yīng)的歌詞樣本;根據(jù)主題詞樣本和歌詞樣本訓(xùn)練雙向LSTM模型和包含內(nèi)部狀態(tài)向量的LSTM模型。本實施例中,為了能夠訓(xùn)練雙向LSTM模型和包含內(nèi)部狀態(tài)向量的LSTM模型,需要獲取大量的歌詞以生成訓(xùn)練樣本。具體地,從獲取的歌詞中的每句歌詞中分別提取主題詞,將提取的主題詞、主題詞對應(yīng)的該句歌詞的長度,以及前一句歌詞共同作為主題詞樣本;將主題詞對應(yīng)的該句歌詞作為歌詞樣本。主題詞樣本和對應(yīng)的歌詞樣本組成樣本對。需要說明的是,可以從預(yù)設(shè)歌詞庫中獲取歌詞,也可以從互聯(lián)網(wǎng)數(shù)據(jù)庫中獲取歌詞,或者以其他方式獲得歌詞,本發(fā)明對此不作限制。另外,需要說明的是,可以通過人工標(biāo)注的方式從歌詞中獲得主題詞樣本與歌詞樣本的樣本對,也可以采用相關(guān)技術(shù)自動獲得主題詞樣本與歌詞樣本的樣本對,本發(fā)明對此不作限制。下面以歌曲《一路向北》的前4句歌詞為例來說明樣本對的構(gòu)造過程。首先,從每一句歌詞中提取一個詞作為主題詞,如表1所示:表1主題詞與歌詞對應(yīng)關(guān)系表主題詞歌詞長度主題詞對應(yīng)的歌詞路5我一路向北季節(jié)7離開有你的季節(jié)累5你說你好累愛7已無法再愛上誰接著,構(gòu)造主題詞樣本和歌詞樣本的樣本對,如表2所示:表2樣本對表主題詞樣本歌詞樣本路5我一路向北季節(jié)7我一路向北離開有你的季節(jié)累5我一路向北離開有你的季節(jié)你說你好累愛7我一路向北離開有你的季節(jié)你說你好累已無法再愛上誰從表2可以看出,主題詞樣本由主題詞、主題詞對應(yīng)歌詞的長度和前一句歌詞組成,歌詞樣本由主題詞對應(yīng)的歌詞組成。而由于在第一句歌詞之前沒有歌詞,與第一句歌詞對應(yīng)的主題詞樣本僅由第一句歌詞的主題詞和第一句歌詞的長度組成。在獲得大量的主題詞樣本和主題詞樣本對應(yīng)的歌詞樣本組成的樣本對之后,即可根據(jù)獲得的樣本對訓(xùn)練雙向LSTM模型和包含內(nèi)部狀態(tài)向量的LSTM模型。需要說明的是,本實施例中的步驟S5可以在步驟S2執(zhí)行之前的任一時刻被執(zhí)行,本發(fā)明對此不作限制。本發(fā)明實施例提出的歌詞生成方法,通過獲取主題詞樣本和對應(yīng)的歌詞樣本來訓(xùn)練雙向LSTM模型和包含內(nèi)部狀態(tài)向量的LSTM模型,能夠利用雙向LSTM模型和包含內(nèi)部狀態(tài)向量的LSTM模型自動生成歌詞,進一步提高歌詞生成的準(zhǔn)確性。為了實現(xiàn)上述實施例,本發(fā)明還提出了一種歌詞生成裝置,圖7是本發(fā)明一實施例提出的歌詞生成裝置的結(jié)構(gòu)示意圖。如圖7所示,本實施例的歌詞生成裝置包括:確定模塊710、轉(zhuǎn)換模塊720,以及生成模塊730。其中,確定模塊710,用于獲取源歌詞,并確定源歌詞中句子的數(shù)量S以及每個句子的長度。轉(zhuǎn)換模塊720,用于基于雙向時間遞歸神經(jīng)網(wǎng)絡(luò)LSTM模型將待生成句子的主題詞、待生成句子的長度和已生成的歌詞組成的輸入序列進行編碼,以將輸入序列轉(zhuǎn)換為一組隱狀態(tài)。生成模塊730,用于基于包含內(nèi)部狀態(tài)向量的時間遞歸神經(jīng)網(wǎng)絡(luò)LSTM模型對隱狀態(tài)進行解碼,以生成待生成句子的歌詞。需要說明的是,為了生成整首歌的歌詞,轉(zhuǎn)換模塊720和生成模塊730需要重復(fù)工作,直至生成S句歌詞。需要說明的是,前述實施例中對歌詞生成方法實施例的解釋說明也適用于本實施例的歌詞生成裝置,其實現(xiàn)原理類似,此處不再贅述。本發(fā)明實施例提出的歌詞生成裝置,通過確定源歌詞中句子的數(shù)量和每個句子的長度,基于雙向時間遞歸神經(jīng)網(wǎng)絡(luò)模型將待生成句子的主題詞、長度和已生成的歌詞組成的輸入序列進行編碼轉(zhuǎn)換為一組隱狀態(tài),并基于包含內(nèi)部狀態(tài)向量的時間遞歸神經(jīng)網(wǎng)絡(luò)模型對隱狀態(tài)進行解碼生成待生成句子的歌詞,進而生成與源歌詞句子數(shù)量相同的新的歌詞。由此,能夠準(zhǔn)確控制生成的每句歌詞的長度,通過為每句話分配主題詞提高生成的歌詞與主題詞之間的相關(guān)性,并利用已生成的句子生成后續(xù)的句子,提高句子與句子之間的邏輯關(guān)聯(lián)性。圖8是本發(fā)明另一實施例提出的歌詞生成裝置的結(jié)構(gòu)示意圖。如圖8所示,該歌詞生成裝置的轉(zhuǎn)換模塊720,可以包括:正向編碼單元721,用于基于正向LSTM模型對輸入序列進行正向編碼,以獲取正向隱狀態(tài)。反向編碼單元722,用于基于反向LSTM模型對輸入序列進行反向編碼,以獲取反向隱狀態(tài)。拼接單元723,用于拼接正向隱狀態(tài)和反向隱狀態(tài),以生成隱狀態(tài)。需要說明的是,前述實施例中對歌詞生成方法實施例的解釋說明也適用于本實施例的歌詞生成裝置,其實現(xiàn)原理類似,此處不再贅述。本發(fā)明實施例提出的歌詞生成裝置,通過基于正向LSTM模型對輸入序列進行正向編碼獲取正向隱狀態(tài),基于反向LSTM模型對輸入序列進行反向編碼獲取反向隱狀態(tài),拼接正向隱狀態(tài)和反向隱狀態(tài)生成隱狀態(tài),能夠同時獲得上文和下文的信息,相較于單向LSTM模型和RNN模型能夠獲得更多的信息,進一步提高歌詞生成的準(zhǔn)確性。圖9是本發(fā)明又一實施例提出的歌詞生成裝置的結(jié)構(gòu)示意圖。如圖9所示,該歌詞生成裝置的生成模塊730,可以包括:獲取單元731,用于獲取隱狀態(tài)對應(yīng)的注意力得分。獲得單元732,用于根據(jù)隱狀態(tài)和隱狀態(tài)對應(yīng)的注意力得分獲得輸入序列的歷史信息向量。生成單元733,用于根據(jù)內(nèi)部狀態(tài)向量、歷史信息向量和前一個字生成當(dāng)前字。組合單元734,用于將生成的當(dāng)前字組合成待生成句子的歌詞??蛇x地,如圖10所示,該歌詞生成裝置的生成模塊730,還可以包括:更新單元735,用于在根據(jù)內(nèi)部狀態(tài)向量、歷史信息向量和前一個字生成當(dāng)前字之后,更新內(nèi)部狀態(tài)向量。需要說明的是,前述實施例中對歌詞生成方法實施例的解釋說明也適用于本實施例的歌詞生成裝置,其實現(xiàn)原理類似,此處不再贅述。本發(fā)明實施例提出的歌詞生成裝置,通過獲取隱狀態(tài)對應(yīng)的注意力得分,并根據(jù)注意力得分和對應(yīng)的隱狀態(tài)獲得輸入序列的歷史信息向量,進而根據(jù)內(nèi)部狀態(tài)向量、歷史信息向量和前一個字生成當(dāng)前字,將生成的多個字組合成待生成句子的歌詞,能夠提高字與字之間的關(guān)聯(lián)性,進一步提高歌詞生成的準(zhǔn)確性。圖11是本發(fā)明再一實施例提出的歌詞生成裝置的結(jié)構(gòu)示意圖。如圖11所示,該歌詞生成裝置還可以包括:訓(xùn)練模塊740,用于訓(xùn)練雙向LSTM模型和包含內(nèi)部狀態(tài)向量的LSTM模型。具體地,訓(xùn)練模塊740用于:獲取主題詞樣本和主題詞樣本對應(yīng)的歌詞樣本;根據(jù)主題詞樣本和歌詞樣本訓(xùn)練雙向LSTM模型和包含內(nèi)部狀態(tài)向量的LSTM模型。需要說明的是,前述實施例中對歌詞生成方法實施例的解釋說明也適用于本實施例的歌詞生成裝置,其實現(xiàn)原理類似,此處不再贅述。本發(fā)明實施例提出的歌詞生成裝置,通過獲取主題詞樣本和對應(yīng)的歌詞樣本來訓(xùn)練雙向LSTM模型和包含內(nèi)部狀態(tài)向量的LSTM模型,能夠利用雙向LSTM模型和包含內(nèi)部狀態(tài)向量的LSTM模型自動生成歌詞,進一步提高歌詞生成的準(zhǔn)確性。為了實現(xiàn)上述實施例,本發(fā)明還提出了一種終端,包括:處理器,以及用于存儲處理器可執(zhí)行指令的存儲器。其中,處理器被配置為執(zhí)行以下步驟:S1’、獲取源歌詞,并確定源歌詞中句子的數(shù)量S以及每個句子的長度;S2’、基于雙向時間遞歸神經(jīng)網(wǎng)絡(luò)LSTM模型將待生成句子的主題詞、待生成句子的長度和已生成的歌詞組成的輸入序列進行編碼,以將輸入序列轉(zhuǎn)換為一組隱狀態(tài);S3’、基于包含內(nèi)部狀態(tài)向量的時間遞歸神經(jīng)網(wǎng)絡(luò)LSTM模型對隱狀態(tài)進行解碼,以生成待生成句子的歌詞;S4’、重復(fù)步驟S2’和S3’,以生成S句歌詞。需要說明的是,前述實施例中對歌詞生成方法實施例的解釋說明也適用于本實施例的終端,其實現(xiàn)原理類似,此處不再贅述。本發(fā)明實施例提出的終端,通過確定源歌詞中句子的數(shù)量和每個句子的長度,基于雙向時間遞歸神經(jīng)網(wǎng)絡(luò)模型將待生成句子的主題詞、長度和已生成的歌詞組成的輸入序列進行編碼轉(zhuǎn)換為一組隱狀態(tài),并基于包含內(nèi)部狀態(tài)向量的時間遞歸神經(jīng)網(wǎng)絡(luò)模型對隱狀態(tài)進行解碼生成待生成句子的歌詞,進而生成與源歌詞句子數(shù)量相同的新的歌詞。由此,能夠準(zhǔn)確控制生成的每句歌詞的長度,通過為每句話分配主題詞提高生成的歌詞與主題詞之間的相關(guān)性,并利用已生成的句子生成后續(xù)的句子,提高句子與句子之間的邏輯關(guān)聯(lián)性。為了實現(xiàn)上述實施例,本發(fā)明還提出了一種非臨時性計算機可讀存儲介質(zhì),用于存儲一個或多個程序,當(dāng)存儲介質(zhì)中的指令由移動終端的處理器執(zhí)行時,使得移動終端能夠執(zhí)行本發(fā)明第一方面實施例提出的歌詞生成方法。本發(fā)明實施例提出的非臨時性計算機可讀存儲介質(zhì),通過確定源歌詞中句子的數(shù)量和每個句子的長度,基于雙向時間遞歸神經(jīng)網(wǎng)絡(luò)模型將待生成句子的主題詞、長度和已生成的歌詞組成的輸入序列進行編碼轉(zhuǎn)換為一組隱狀態(tài),并基于包含內(nèi)部狀態(tài)向量的時間遞歸神經(jīng)網(wǎng)絡(luò)模型對隱狀態(tài)進行解碼生成待生成句子的歌詞,進而生成與源歌詞句子數(shù)量相同的新的歌詞。由此,能夠準(zhǔn)確控制生成的每句歌詞的長度,通過為每句話分配主題詞提高生成的歌詞與主題詞之間的相關(guān)性,并利用已生成的句子生成后續(xù)的句子,提高句子與句子之間的邏輯關(guān)聯(lián)性。為了實現(xiàn)上述實施例,本發(fā)明還提出了一種計算機程序產(chǎn)品,當(dāng)計算機程序產(chǎn)品中的指令被處理器執(zhí)行時,執(zhí)行本發(fā)明第一方面實施例提出的歌詞生成方法。本發(fā)明實施例提出的計算機程序產(chǎn)品,通過確定源歌詞中句子的數(shù)量和每個句子的長度,基于雙向時間遞歸神經(jīng)網(wǎng)絡(luò)模型將待生成句子的主題詞、長度和已生成的歌詞組成的輸入序列進行編碼轉(zhuǎn)換為一組隱狀態(tài),并基于包含內(nèi)部狀態(tài)向量的時間遞歸神經(jīng)網(wǎng)絡(luò)模型對隱狀態(tài)進行解碼生成待生成句子的歌詞,進而生成與源歌詞句子數(shù)量相同的新的歌詞。由此,能夠準(zhǔn)確控制生成的每句歌詞的長度,通過為每句話分配主題詞提高生成的歌詞與主題詞之間的相關(guān)性,并利用已生成的句子生成后續(xù)的句子,提高句子與句子之間的邏輯關(guān)聯(lián)性。需要說明的是,在本發(fā)明的描述中,術(shù)語“第一”、“第二”等僅用于描述目的,而不能理解為指示或暗示相對重要性。此外,在本發(fā)明的描述中,除非另有說明,“多個”的含義是兩個或兩個以上。流程圖中或在此以其他方式描述的任何過程或方法描述可以被理解為,表示包括一個或更多個用于實現(xiàn)特定邏輯功能或過程的步驟的可執(zhí)行指令的代碼的模塊、片段或部分,并且本發(fā)明的優(yōu)選實施方式的范圍包括另外的實現(xiàn),其中可以不按所示出或討論的順序,包括根據(jù)所涉及的功能按基本同時的方式或按相反的順序,來執(zhí)行功能,這應(yīng)被本發(fā)明的實施例所屬
技術(shù)領(lǐng)域:
的技術(shù)人員所理解。應(yīng)當(dāng)理解,本發(fā)明的各部分可以用硬件、軟件、固件或它們的組合來實現(xiàn)。在上述實施方式中,多個步驟或方法可以用存儲在存儲器中且由合適的指令執(zhí)行系統(tǒng)執(zhí)行的軟件或固件來實現(xiàn)。例如,如果用硬件來實現(xiàn),和在另一實施方式中一樣,可用本領(lǐng)域公知的下列技術(shù)中的任一項或他們的組合來實現(xiàn):具有用于對數(shù)據(jù)信號實現(xiàn)邏輯功能的邏輯門電路的離散邏輯電路,具有合適的組合邏輯門電路的專用集成電路,可編程門陣列(PGA),現(xiàn)場可編程門陣列(FPGA)等。本
技術(shù)領(lǐng)域:
的普通技術(shù)人員可以理解實現(xiàn)上述實施例方法攜帶的全部或部分步驟是可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲于一種計算機可讀存儲介質(zhì)中,該程序在執(zhí)行時,包括方法實施例的步驟之一或其組合。此外,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理模塊中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個模塊中。上述集成的模塊既可以采用硬件的形式實現(xiàn),也可以采用軟件功能模塊的形式實現(xiàn)。所述集成的模塊如果以軟件功能模塊的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,也可以存儲在一個計算機可讀取存儲介質(zhì)中。上述提到的存儲介質(zhì)可以是只讀存儲器,磁盤或光盤等。在本說明書的描述中,參考術(shù)語“一個實施例”、“一些實施例”、“示例”、“具體示例”、或“一些示例”等的描述意指結(jié)合該實施例或示例描述的具體特征、結(jié)構(gòu)、材料或者特點包含于本發(fā)明的至少一個實施例或示例中。在本說明書中,對上述術(shù)語的示意性表述不必須針對的是相同的實施例或示例。而且,描述的具體特征、結(jié)構(gòu)、材料或者特點可以在任一個或多個實施例或示例中以合適的方式結(jié)合。此外,在不相互矛盾的情況下,本領(lǐng)域的技術(shù)人員可以將本說明書中描述的不同實施例或示例以及不同實施例或示例的特征進行結(jié)合和組合。盡管上面已經(jīng)示出和描述了本發(fā)明的實施例,可以理解的是,上述實施例是示例性的,不能理解為對本發(fā)明的限制,本領(lǐng)域的普通技術(shù)人員在本發(fā)明的范圍內(nèi)可以對上述實施例進行變化、修改、替換和變型。當(dāng)前第1頁1 2 3