コード例 #1
0
ファイル: Hello.py プロジェクト: fynv/ScoreDraft
#!/usr/bin/python3

import ScoreDraft
from ScoreDraft.Notes import *

doc = ScoreDraft.Document()

seq = [do(), do(), so(), so(), la(), la(), so(5, 96)]

doc.playNoteSeq(seq, ScoreDraft.KarplusStrongInstrument())
#doc.mixDown('Hello.wav')

targetBuf = ScoreDraft.TrackBuffer(-1)
doc.mix(targetBuf)

ScoreDraft.PlayTrackBuffer(targetBuf)
コード例 #2
0
ファイル: DSPModule.py プロジェクト: DomitoriKor/CourseWork
def produce_speech(sentence,
                   output_path="",
                   playback=True,
                   by_sentence=False,
                   sentence_number='1'):
    try:
        return_message = ""
        if not os.path.exists(temp_dir):
            os.mkdir(temp_dir)
        filename = "temp" + sentence_number + ".wav"
        temp_filename = os.path.join(temp_dir, filename)

        doc = ScoreDraft.Document()
        doc.setTempo(120)

        sn = 24  #Short note
        ln = 48  #Long note

        singer = ScoreDraft.Yami_UTAU()
        ScoreDraft.UtauDraftSetLyricConverter(
            singer, VCCVEnglishConverter.VCCVEnglishConverter)
        singer.tune('CZMode')

        sequence = []
        for word in sentence:
            subsequence = ()
            for syllable in word:
                if syllable[0] == 'rest':
                    if len(subsequence) != 0:
                        sequence.append(subsequence)
                        subsequence = ()
                    if syllable[1] == -3:  #Long pause
                        sequence.append(BL(ln))
                    elif syllable[1] == -2:  #Short pause
                        sequence.append(BL(sn))
                elif syllable[0] != '':
                    if syllable[1] == 0:  #Unstressed syllable
                        subsequence += (syllable[0], mi(5, sn))
                    elif syllable[1] == 2:  #Secondary stressed syllable
                        subsequence += (syllable[0], fa(5, sn))
                    elif syllable[1] == 1:  #Primary stressed syllable
                        subsequence += (syllable[0], so(5, sn))
            if len(subsequence) != 0:
                sequence.append(subsequence)

        doc.sing(sequence, singer)
        doc.mixDown(temp_filename)
        rendered_filename = temp_filename

        if output_path != "":
            try:
                if not "." in os.path.basename(
                        output_path) or os.path.basename(
                            output_path).startswith("."):
                    if not os.path.exists(os.path.abspath(output_path)):
                        os.mkdir(os.path.abspath(output_path))
                    filename = 'sentence' + sentence_number + '-on-{}.wav'.format(
                        str(datetime.now()).replace(':', '-'))
                    output_filename = os.path.join(output_path, filename)
                else:
                    if not os.path.exists(os.path.dirname(output_path)):
                        os.mkdir(os.path.dirname(output_path))
                    output_filename = output_path
                    if not output_path.endswith(".wav"):
                        output_filename += sentence_number * by_sentence + ".wav"
                shutil.copy(temp_filename, output_filename)
                rendered_filename = output_filename
                return_message += "----Rendered .wav file is available at " + rendered_filename + "\n"
            except:
                pass
                return_message += "!!!-An error occured during saving rendered file at output path\n"

    except:
        return_message += "!!!-An error occured during rendering process\n"
    try:
        if playback:
            chunk = 1024
            file = wave.open(rendered_filename, "rb")
            player = pyaudio.PyAudio()
            stream = player.open(format=player.get_format_from_width(
                file.getsampwidth()),
                                 channels=file.getnchannels(),
                                 rate=file.getframerate(),
                                 output=True)

            data = file.readframes(chunk)
            while len(data) > 0:
                stream.write(data)
                data = file.readframes(chunk)

            stream.stop_stream()
            stream.close()

            player.terminate()
            #            playsound(rendered_filename)
            pass
    except:
        pass
    shutil.rmtree(temp_dir, ignore_errors=True)
    return return_message