コード例 #1
0
ファイル: string.c プロジェクト: bandilab/bandicoot
extern int str_split(char *s, const char *delims, char *out[], int max)
{
    return _str_split(s, delims, &out, max);
}
コード例 #2
0
ファイル: cew_driver.c プロジェクト: ptrwtts/aeneas
int main(int argc, char **argv) {

    const char *voice_code, *text, *output_file_name, *mode;
    int sample_rate_ret, backwards;
    struct FRAGMENT_INFO fragment;
    float quit_after;
    struct FRAGMENT_INFO *fragments;
    char **texts;
    int i, n;
    size_t synthesized_ret;

    if (argc < 5) {
        _usage(argv[0]);
        return DRIVER_FAILURE;
    }
    voice_code = argv[1];
    text = argv[2];
    output_file_name = argv[3];
    mode = argv[4];

    if (strcmp(mode, "multi") == 0) {
        if (argc < 7) {
            _usage(argv[0]);
            return DRIVER_FAILURE;
        }
        quit_after = (float)atof(argv[5]);
        backwards = atoi(argv[6]);

        // split text into fragments
        n = 0;
        texts = _str_split((char *)text, '|', &n);

        // create fragments
        fragments = (struct FRAGMENT_INFO *)calloc(sizeof(fragment), n);
        for (i = 0; i < n; ++i) {
            fragments[i].voice_code = voice_code;
            fragments[i].text = texts[i];
        }

        // synthesize
        if(_synthesize_multiple(
                    output_file_name,
                    &fragments,
                    n,
                    quit_after,
                    backwards,
                    &sample_rate_ret,
                    &synthesized_ret
                ) != CEW_SUCCESS) {
            printf("Error while calling _synthesize_single()\n");
            return DRIVER_FAILURE;
        }
        printf("Sample rate: %d\n", sample_rate_ret);
        printf("Synthesized: %lu\n", synthesized_ret);
        for (i = 0; i < synthesized_ret; ++i) {
            printf("%d %.3f %.3f\n", i, fragments[i].begin, fragments[i].end);
        }

        // deallocate
        for (i = 0; i < n; ++i) {
            free((void *)fragments[i].text);
        }
        free((void *)fragments);
        free((void *)texts);
        fragments = NULL;
        texts = NULL;
    } else {
        fragment.voice_code = voice_code;
        fragment.text = text;
        if (_synthesize_single(output_file_name, &sample_rate_ret, &fragment) != CEW_SUCCESS) {
            printf("Error while calling _synthesize_single()\n");
            return DRIVER_FAILURE;
        }
        printf("Sample rate: %d\n", sample_rate_ret);
        printf("Begin:       %.3f\n", fragment.begin);
        printf("End:         %.3f\n", fragment.end);
    }

    return DRIVER_SUCCESS;
}