Example #1
0
def alignDependingOnWithDuration(URIrecordingNoExt, whichSection, pathToComposition, withDuration, withSynthesis, evalLevel, params, usePersistentFiles, htkParser):
    '''
    call alignment method depending on whether duration or htk  selected 
    '''

    Phonetizer.initLookupTable(withSynthesis)
    
    tokenLevelAlignedSuffix, phonemesAlignedSuffix = determineSuffix(withDuration, withSynthesis, evalLevel)
    
    
    if withDuration:
        alignmentErrors, detectedWordList, grTruthDurationWordList = alignOneChunk(URIrecordingNoExt, pathToComposition, whichSection, htkParser, params, evalLevel, usePersistentFiles)
        
            
    else:
        URIrecordingAnno = URIrecordingNoExt + ANNOTATION_EXT
        URIrecordingWav = URIrecordingNoExt + AUDIO_EXTENSION
        # new makamScore used
        lyricsObj = loadLyrics(pathToComposition, whichSection)
        lyrics = lyricsObj.__str__()
#         in case  we are at no-lyrics section
        if not lyrics or lyrics =='_SAZ_':
            logger.warn("skipping section {} with no lyrics ...".format(whichSection))
            return [], [], [], []
    
        outputHTKPhoneAlignedURI = Aligner.alignOnechunk(MODEL_URI, URIrecordingWav, lyrics.__str__(), URIrecordingAnno, '/tmp/', withSynthesis)
        alignmentErrors = evalAlignmentError(URIrecordingAnno, outputHTKPhoneAlignedURI, evalLevel)
        detectedWordList = outputHTKPhoneAlignedURI
        grTruthDurationWordList = []
    
    # store decoding results in a file FIXME: if with duration it is not mlf 
    detectedAlignedfileName = []
    detectedAlignedfileName =  tokenList2TabFile(detectedWordList, URIrecordingNoExt, tokenLevelAlignedSuffix)
        
    return alignmentErrors, detectedWordList, grTruthDurationWordList, detectedAlignedfileName
Example #2
0
        def expandToPhonemes(self):
            '''
            make sure text has no whitespaces
            '''
            
#             METUtext = PhonetizerOlder.turkishScriptWord2METUScriptWord(self.text)
#             phonemeIDs = PhonetizerOlder.grapheme2Phoneme(METUtext)
#           
            if not Phonetizer.lookupTable:
                sys.exit("Phonetizer.lookupTable not defined. do Phonetizer.initlookupTable at beginning of all code")   
            
            self.phonemes = []
            
            # instrument
            if self.text == '_SAZ_':
                self.phonemes.append(Phoneme('sil'))
            
            # text from lyrics
            else:
                phonemeIDs = Phonetizer.grapheme2Phoneme(self.text)
                
                for phonemeID in phonemeIDs:
                    self.phonemes.append(Phoneme(phonemeID))
            
            if self.hasShortPauseAtEnd:
                self.phonemes.append(Phoneme('sp'))
Example #3
0
def loadMakamScore(pathToComposition):
    '''
    same as loadLyrics, but return MakamScore, so that all lyrics can be shown if needed
    '''
    Phonetizer.initLookupTable(False)

    os.chdir(pathToComposition)

    pathTotxt = os.path.join(pathToComposition, glob.glob("*.txt")[0])

    listExtensions = ["sections.json", "sections.tsv", "sections.txt"]
    sectionFiles = findFileByExtensions(pathToComposition, listExtensions)
    sectionFile = sectionFiles[0]

    pathToSectionTsv = os.path.join(pathToComposition, sectionFile)
    makamScore = MakamScore(pathTotxt, pathToSectionTsv)
    return makamScore
Example #4
0
def loadMakamScore(pathToComposition):
    '''
    same as loadLyrics, but return MakamScore, so that all lyrics can be shown if needed
    '''
    Phonetizer.initLookupTable(False)
    
    os.chdir(pathToComposition)

    pathTotxt = os.path.join(pathToComposition, glob.glob("*.txt")[0])
    
    listExtensions = [ "sections.json", "sections.tsv", "sections.txt"]
    sectionFiles = findFileByExtensions(pathToComposition, listExtensions)
    sectionFile = sectionFiles[0]
        
    pathToSectionTsv = os.path.join(pathToComposition, sectionFile)
    makamScore = MakamScore(pathTotxt, pathToSectionTsv )
    return makamScore
Example #5
0
def syllables2Lyrics(syllables):
        
        listWords = []
        for syllable in syllables:
            # word of only one syllable
            word, dummy = createWord([], syllable)
            listWords.append(word)
    

        Phonetizer.initLookupTable(True,  'phonemeMandarin2METUphonemeLookupTableSYNTH')

        # load phonetic dict 
        Phonetizer.initPhoneticDict('syl2phn46.txt')                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
    
        ## 3) create lyrics
        # here is called Syllable.expandToPhonemes.
        lyrics = Lyrics(listWords)
        return lyrics
Example #6
0
def loadLyrics(pathToComposition, whichSection):

    Phonetizer.initLookupTable(False)

    os.chdir(pathToComposition)

    pathTotxt = os.path.join(pathToComposition, glob.glob("*.txt")[0])

    listExtensions = ["sections.json", "sections.tsv", "sections.txt"]
    sectionFiles = findFileByExtensions(pathToComposition, listExtensions)
    sectionFile = sectionFiles[0]

    pathToSectionTsv = os.path.join(pathToComposition, sectionFile)
    makamScore = MakamScore(pathTotxt, pathToSectionTsv)

    # phoneme IDs

    lyrics = makamScore.getLyricsForSection(whichSection)
    return lyrics
Example #7
0
def loadLyrics(pathToComposition, whichSection):

    Phonetizer.initLookupTable(False)
    
    os.chdir(pathToComposition)

    pathTotxt = os.path.join(pathToComposition, glob.glob("*.txt")[0])
    
    listExtensions = [ "sections.json", "sections.tsv", "sections.txt"]
    sectionFiles = findFileByExtensions(pathToComposition, listExtensions)
    sectionFile = sectionFiles[0]
        
    pathToSectionTsv = os.path.join(pathToComposition, sectionFile)
    makamScore = MakamScore(pathTotxt, pathToSectionTsv )
    
    # phoneme IDs
    
    lyrics = makamScore.getLyricsForSection(whichSection)
    return lyrics
        def expandToPhonemes(self):
            '''
            one-to-one function: PINYIN characters to turkish METU. 
            as intermediate step mandarin phoneset are used.   
            '''
            
            
            ######################
            ### pinyin to mandarin phonemeSet
            if not Phonetizer.phoneticDict:
                sys.exit("Phonetizer.phonetic Dict not defined. do Phonetizer.initPhoneticDict at beginning of all code")   
            
            self.phonemes = []    

            #  notes for instrument
            if self.text == 'REST':
                # TODO: replace with other model instead of silence
                self.phonemes.append(Phoneme('sil'))
                # TODO: does sp at end of sp make sence? 
                self.phonemes.append(Phoneme('sp'))
                return
            
            if self.text not in Phonetizer.phoneticDict:
                sys.exit("unknown syllable {} Please add it to the dict".format(self.text))
                  
            mandarinPhonemes = Phonetizer.phoneticDict[self.text]
              
            ####################
            #### mandarin to turkish METU
            
            if not Phonetizer.lookupTable:
                sys.exit("Phonetizer.lookupTable not defined. do Phonetizer.initlookupTable at beginning of all code")   

            phonemeIDs = []
            
            for ph in mandarinPhonemes:
                phonemeIDs = Phonetizer.grapheme2phonemeList(ph, phonemeIDs)
          
            #### create Phonemes as field
            for phonemeID in phonemeIDs:
                self.phonemes.append(Phoneme(phonemeID))
        
            if self.hasShortPauseAtEnd:
                self.phonemes.append(Phoneme('sp'))
                            syllablesInCurrWord.append(currSyllable)
                            
                        beginIndex = beginIndex + 1
                        
        return listWords, beginIndex
        
     

    

#################################################################################

if __name__ == "__main__":
    
    pathTxt=  '/Users/joro/Documents/Phd/UPF/turkish-makam-lyrics-2-audio-test-data/nihavent--sarki--aksak--bakmiyor_cesm-i--haci_arif_bey/nihavent--sarki--aksak--bakmiyor_cesm-i--haci_arif_bey.txt'
    pathTsv= '/Users/joro/Documents/Phd/UPF/turkish-makam-lyrics-2-audio-test-data/nihavent--sarki--aksak--bakmiyor_cesm-i--haci_arif_bey/nihavent--sarki--aksak--bakmiyor_cesm-i--haci_arif_bey.sections.tsv'
    
    pathTxt=  '/Users/joro/Documents/Phd/UPF/turkish-makam-lyrics-2-audio-test-data-synthesis/nihavent--sarki--duyek--bir_ihtimal--osman_nihat_akin/nihavent--sarki--duyek--bir_ihtimal--osman_nihat_akin.txt'
    pathTsv= '/Users/joro/Documents/Phd/UPF/turkish-makam-lyrics-2-audio-test-data-synthesis/nihavent--sarki--duyek--bir_ihtimal--osman_nihat_akin/nihavent--sarki--duyek--bir_ihtimal--osman_nihat_akin.sections.tsv'
    
    
    
    Phonetizer.initLookupTable(False)
    symbTrParser = SymbTrParser(pathTxt, pathTsv)
        
    symbTrParser.syllables2Lyrics()

    # print them, put instrument as name
    print symbTrParser.sectionLyrics[5]
    print symbTrParser.sectionLyrics[0]
                #restart counting
                syllablesInCurrWord = []

            else:
                syllablesInCurrWord.append(currSyllable)

            beginIndex = beginIndex + 1

        return listWords, beginIndex


#################################################################################

if __name__ == "__main__":

    pathTxt = '/Users/joro/Documents/Phd/UPF/turkish-makam-lyrics-2-audio-test-data/nihavent--sarki--aksak--bakmiyor_cesm-i--haci_arif_bey/nihavent--sarki--aksak--bakmiyor_cesm-i--haci_arif_bey.txt'
    pathTsv = '/Users/joro/Documents/Phd/UPF/turkish-makam-lyrics-2-audio-test-data/nihavent--sarki--aksak--bakmiyor_cesm-i--haci_arif_bey/nihavent--sarki--aksak--bakmiyor_cesm-i--haci_arif_bey.sections.tsv'

    pathTxt = '/Users/joro/Documents/Phd/UPF/turkish-makam-lyrics-2-audio-test-data-synthesis/nihavent--sarki--duyek--bir_ihtimal--osman_nihat_akin/nihavent--sarki--duyek--bir_ihtimal--osman_nihat_akin.txt'
    pathTsv = '/Users/joro/Documents/Phd/UPF/turkish-makam-lyrics-2-audio-test-data-synthesis/nihavent--sarki--duyek--bir_ihtimal--osman_nihat_akin/nihavent--sarki--duyek--bir_ihtimal--osman_nihat_akin.sections.tsv'

    Phonetizer.initLookupTable(False)
    symbTrParser = SymbTrParser(pathTxt, pathTsv)

    symbTrParser.syllables2Lyrics()

    # print them, put instrument as name
    print symbTrParser.sectionLyrics[5]
    print symbTrParser.sectionLyrics[0]
Example #11
0
def loadLyricsFromTextGridSentence(currSentence):
    Phonetizer.initLookupTable(True,  'phonemeMandarin2METUphonemeLookupTableSYNTH')
    syllables = currSentence[4]
    lyrics = syllables2Lyrics(syllables)

    return lyrics
pathHMMDuration = os.path.join(parentDir, 'AlignmentDuration')
if pathHMMDuration not in sys.path:
    sys.path.append(pathHMMDuration)

from Phonetizer import Phonetizer

if __name__ == '__main__':

    aria = 'dan-xipi_02'
    aria = 'laosheng-xipi_02'
    aria = 'laosheng-erhuang_04'

    URI = '/Users/joro/Documents/Phd/UPF/arias_dev_01_t_70/'

    MusicXmlURI = URI + aria + '_score.xml'
    lyricsTextGrid = URI + aria + '.TextGrid'

    #     MusicXmlURI = 'dan-xipi_01_score.xml'
    #     lyricsTextGrid = 'dan-xipi_01.TextGrid'

    musicXMLParser = MusicXMLParser(MusicXmlURI, lyricsTextGrid)

    Phonetizer.initLookupTable(True,
                               'phonemeMandarin2METUphonemeLookupTableSYNTH')

    for i in range(len(musicXMLParser.listSentences)):
        print i, " ", musicXMLParser.getLyricsForSection(i)

#     for syll in musicXMLParser.listSyllables:
#         print syll
    sys.path.append(pathHMMDuration)


from Phonetizer import Phonetizer


if __name__=='__main__':
    
    aria = 'dan-xipi_02' 
    aria = 'laosheng-xipi_02'
    aria = 'laosheng-erhuang_04'
    
    URI = '/Users/joro/Documents/Phd/UPF/arias_dev_01_t_70/' 
      
    MusicXmlURI = URI + aria + '_score.xml'
    lyricsTextGrid =  URI + aria + '.TextGrid'
    
#     MusicXmlURI = 'dan-xipi_01_score.xml'
#     lyricsTextGrid = 'dan-xipi_01.TextGrid'
    

    musicXMLParser = MusicXMLParser(MusicXmlURI, lyricsTextGrid)
    
    Phonetizer.initLookupTable(True,  'phonemeMandarin2METUphonemeLookupTableSYNTH')

    for i in range(len(musicXMLParser.listSentences)):
        print i, " ",  musicXMLParser.getLyricsForSection(i)
    
#     for syll in musicXMLParser.listSyllables:
#         print syll