Example #1
0
def main(args):
    # MODEL
    num_features = [args.features*i for i in range(1, args.levels+1)] if args.feature_growth == "add" else \
                   [args.features*2**i for i in range(0, args.levels)]
    target_outputs = int(args.output_size * args.sr)
    model = Waveunet(args.channels,
                     num_features,
                     args.channels,
                     args.instruments,
                     kernel_size=args.kernel_size,
                     target_output_size=target_outputs,
                     depth=args.depth,
                     strides=args.strides,
                     conv_type=args.conv_type,
                     res=args.res,
                     separate=args.separate)

    if args.cuda:
        model = utils.DataParallel(model)
        print("move model to gpu")
        model.cuda()

    print("Loading model from checkpoint " + str(args.load_model))
    state = utils.load_model(model, None, args.load_model)
    print('Step', state['step'])

    preds = predict_song(args, args.input, model)

    output_folder = os.path.dirname(
        args.input) if args.output is None else args.output
    for inst in preds.keys():
        utils.write_wav(
            os.path.join(output_folder,
                         os.path.basename(args.input) + "_" + inst + ".wav"),
            preds[inst], args.sr)
Example #2
0
    def predict(self, input):
        """Separate tracks from input mixture audio"""

        out_path = Path(tempfile.mkdtemp())
        zip_path = Path(tempfile.mkdtemp()) / "output.zip"

        preds = predict_song(self.args, input, self.model)

        out_names = []
        for inst in preds.keys():
            temp_n = os.path.join(
                str(out_path),
                os.path.basename(str(input)) + "_" + inst + ".wav")
            data.utils.write_wav(temp_n, preds[inst], self.args.sr)
            out_names.append(temp_n)

        with zipfile.ZipFile(str(zip_path), "w") as zf:
            for i in out_names:
                zf.write(str(i))

        return zip_path
Example #3
0
               [args.features*2**i for i in range(0, args.levels)]
target_outputs = int(args.output_size * args.sr)
model = Waveunet(args.channels,
                 num_features,
                 args.channels,
                 INSTRUMENTS,
                 kernel_size=args.kernel_size,
                 target_output_size=target_outputs,
                 depth=args.depth,
                 strides=args.strides,
                 conv_type=args.conv_type,
                 res=args.res,
                 separate=args.separate)

if args.cuda:
    model = utils.DataParallel(model)
    print("move model to gpu")
    model.cuda()

print("Loading model from checkpoint " + str(args.load_model))
state = utils.load_model(model, None, args.load_model)

preds = predict_song(args, args.input, model)

output_folder = os.path.dirname(
    args.input) if args.output is None else args.output
for inst in preds.keys():
    utils.write_wav(
        os.path.join(output_folder,
                     os.path.basename(args.input) + "_" + inst + ".wav"),
        preds[inst], args.sr)