help="Remove files from previous runs",
                        action='store_true')
    parser.add_argument('-d',
                        '--debug',
                        help="Debug the aligner",
                        action='store_true')
    parser.add_argument(
        '--config_path',
        type=str,
        default='',
        help='Path to config file to use for training and alignment')
    args = parser.parse_args()
    fix_path()
    try:
        args.speaker_characters = int(args.speaker_characters)
    except ValueError:
        pass
    if not args.output_model_path:
        args.output_model_path = None
    validate_args(args)

    args.output_directory = args.output_directory.rstrip('/').rstrip('\\')
    args.corpus_directory = args.corpus_directory.rstrip('/').rstrip('\\')
    if args.corpus_directory == args.output_directory:
        raise Exception(
            'Corpus directory and output directory cannot be the same folder.')

    temp_dir = args.temp_directory
    align_corpus(args)
    unfix_path()
    parser.add_argument('-o', '--output_model_path', type = str, default = '', help = 'Full path to save resulting acoustic and dictionary model')
    parser.add_argument('-s', '--speaker_characters', type = int, default = 0,
                    help = 'Number of characters of filenames to use for determining speaker, default is to use directory names')
    parser.add_argument('-t', '--temp_directory', type = str, default = '',
                    help = 'Temporary directory root to use for aligning, default is ~/Documents/MFA')
    parser.add_argument('-f', '--fast', help = "Perform a quick alignment with half the number of alignment iterations", action = 'store_true')
    parser.add_argument('-j','--num_jobs', type = int, default = 3,
                    help = 'Number of cores to use while aligning')
    parser.add_argument('-v', '--verbose', help = "Output debug messages about alignment", action = 'store_true')
    parser.add_argument('--nodict', help = "Create a dictionary based on the orthography", action = 'store_true')
    parser.add_argument('-c', '--clean', help = "Remove files from previous runs", action = 'store_true')
    args = parser.parse_args()
    corpus_dir = os.path.expanduser(args.corpus_dir)
    dict_path = os.path.expanduser(args.dict_path)
    output_dir = os.path.expanduser(args.output_dir)
    output_model_path = os.path.expanduser(args.output_model_path)
    temp_dir = args.temp_directory
    if not output_model_path:
        output_model_path = None
    if args.nodict == False and dict_path == '':
        raise(Exception('Must specify dictionary or nodict option'))
    if args.nodict == True and dict_path != '':
        raise(Exception('Dict_path cannot be specified with nodict option'))
    elif args.nodict == True:
        align_corpus_no_dict(corpus_dir, output_dir, temp_dir,
                    output_model_path, args)
    elif args.nodict == False:
        align_corpus(corpus_dir,dict_path, output_dir, temp_dir,
                    output_model_path, args)
    unfix_path()