espeak-ng 0.2.0

Pure Rust port of eSpeak NG text-to-speech
Documentation
//! Pitch envelope tables, transcribed from upstream `intonation.c`.
//!
//! Each envelope is 128 samples of a pitch contour, indexed by position
//! through the syllable and scaled between the syllable's `pitch1` and
//! `pitch2`.  [`ENVELOPE_DATA`] is the lookup C uses (`envelope_data[]`):
//! two entries per shape, the second being the "rising" variant.

pub static ENV_FALL: [u8; 128] = [
    255, 253, 250, 248, 246, 244, 242, 240, 238, 236, 234, 232, 230, 228, 226, 224,
    222, 220, 218, 216, 214, 212, 210, 208, 206, 204, 202, 200, 198, 196, 194, 192,
    190, 188, 186, 184, 182, 180, 178, 176, 174, 172, 170, 168, 166, 164, 162, 160,
    158, 156, 154, 152, 150, 148, 146, 144, 142, 140, 138, 136, 134, 132, 130, 128,
    126, 124, 122, 120, 118, 116, 114, 112, 110, 108, 106, 104, 102, 100, 98, 96,
    94, 92, 90, 88, 86, 84, 82, 80, 78, 76, 74, 72, 70, 68, 66, 64,
    62, 60, 58, 56, 54, 52, 50, 48, 46, 44, 42, 40, 38, 36, 34, 32,
    30, 28, 26, 24, 22, 20, 18, 16, 14, 12, 10, 8, 6, 4, 2, 0,
];

pub static ENV_RISE: [u8; 128] = [
    0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30,
    32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62,
    64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94,
    96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126,
    128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158,
    160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190,
    192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 222,
    224, 226, 228, 230, 232, 234, 236, 238, 240, 242, 244, 246, 248, 250, 253, 255,
];

pub static ENV_FRISE: [u8; 128] = [
    255, 244, 234, 224, 214, 204, 195, 186, 177, 168, 159, 151, 143, 135, 127, 120,
    113, 106, 99, 92, 86, 80, 74, 68, 63, 57, 52, 47, 43, 38, 34, 30,
    26, 23, 19, 16, 13, 11, 8, 6, 4, 2, 1, 0, 0, 0, 0, 0,
    0, 0, 1, 2, 3, 4, 5, 7, 8, 10, 12, 14, 16, 19, 21, 23,
    26, 29, 31, 34, 37, 40, 44, 46, 48, 50, 52, 54, 57, 59, 61, 64,
    66, 69, 71, 74, 76, 79, 81, 84, 87, 90, 93, 95, 98, 101, 104, 107,
    110, 113, 116, 120, 123, 126, 129, 133, 136, 139, 143, 146, 150, 153, 157, 160,
    164, 168, 172, 175, 179, 183, 187, 191, 195, 199, 203, 207, 211, 215, 219, 224,
];

pub static ENV_R_FRISE: [u8; 128] = [
    207, 204, 201, 198, 195, 192, 189, 185, 180, 176, 171, 167, 162, 156, 151, 146,
    140, 134, 129, 123, 117, 111, 105, 99, 93, 87, 80, 74, 68, 62, 56, 51,
    45, 39, 34, 28, 23, 18, 13, 8, 4, 2, 2, 1, 0, 0, 0, 0,
    0, 1, 1, 2, 3, 4, 5, 7, 8, 10, 12, 13, 15, 18, 20, 22,
    25, 27, 30, 33, 36, 39, 42, 45, 48, 52, 54, 56, 58, 60, 63, 65,
    67, 70, 72, 75, 77, 80, 82, 85, 88, 90, 93, 96, 99, 102, 105, 108,
    111, 114, 117, 120, 123, 126, 129, 133, 136, 139, 143, 146, 150, 153, 157, 160,
    164, 168, 172, 175, 179, 183, 187, 191, 195, 199, 203, 207, 211, 215, 219, 224,
];

pub static ENV_FRISE2: [u8; 128] = [
    255, 249, 244, 238, 233, 228, 223, 218, 213, 208, 203, 198, 193, 189, 184, 179,
    175, 170, 166, 161, 157, 153, 149, 144, 140, 136, 132, 128, 125, 121, 117, 113,
    110, 106, 103, 99, 96, 93, 89, 86, 83, 80, 77, 74, 71, 68, 65, 62,
    60, 57, 55, 52, 50, 47, 45, 43, 40, 38, 36, 34, 32, 30, 28, 26,
    25, 23, 21, 20, 18, 17, 15, 14, 13, 12, 10, 9, 8, 7, 6, 5,
    5, 4, 3, 2, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 1, 1, 2, 2, 3, 4, 4, 5, 6, 7, 8,
    9, 10, 11, 12, 14, 15, 16, 18, 19, 21, 23, 24, 26, 28, 30, 32,
];

pub static ENV_R_FRISE2: [u8; 128] = [
    208, 206, 205, 204, 202, 200, 199, 197, 195, 193, 192, 189, 187, 184, 181, 179,
    176, 173, 170, 167, 163, 160, 157, 153, 150, 146, 143, 139, 135, 132, 128, 124,
    120, 116, 112, 109, 105, 101, 97, 93, 89, 85, 81, 77, 74, 70, 66, 62,
    59, 55, 52, 49, 47, 45, 42, 40, 38, 36, 34, 32, 30, 28, 26, 25,
    23, 21, 20, 18, 17, 15, 14, 13, 12, 10, 9, 8, 7, 6, 5, 5,
    4, 3, 2, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 1, 1, 2, 2, 3, 4, 4, 5, 6, 7, 8,
    9, 10, 11, 12, 14, 15, 16, 18, 19, 21, 23, 24, 26, 28, 30, 32,
];

pub static ENV_RISEFALL: [u8; 128] = [
    152, 153, 153, 154, 156, 157, 159, 161, 164, 167, 169, 172, 176, 179, 182, 186,
    190, 193, 197, 201, 205, 209, 212, 216, 220, 223, 227, 230, 234, 237, 240, 242,
    245, 247, 249, 251, 252, 253, 254, 254, 255, 255, 255, 255, 255, 255, 254, 253,
    251, 250, 248, 246, 243, 241, 238, 236, 233, 230, 228, 224, 221, 218, 215, 211,
    208, 204, 200, 196, 192, 188, 184, 180, 176, 172, 167, 163, 159, 154, 150, 145,
    141, 136, 132, 127, 123, 118, 114, 109, 105, 101, 96, 92, 88, 84, 80, 76,
    72, 68, 64, 60, 57, 53, 50, 47, 43, 40, 38, 35, 32, 29, 26, 23,
    21, 18, 15, 13, 10, 8, 7, 5, 3, 2, 1, 0, 0, 0, 0, 0,
];

pub static ENV_RISE2: [u8; 128] = [
    0, 0, 0, 0, 1, 1, 1, 2, 2, 3, 3, 4, 4, 5, 6, 6,
    7, 8, 8, 9, 10, 11, 12, 12, 13, 14, 15, 16, 17, 18, 19, 20,
    22, 23, 24, 25, 27, 28, 29, 31, 32, 34, 35, 37, 38, 40, 41, 43,
    45, 47, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 71, 73, 75,
    78, 80, 82, 85, 87, 90, 93, 95, 98, 101, 103, 106, 109, 112, 115, 118,
    121, 124, 127, 130, 134, 137, 140, 144, 147, 150, 154, 157, 160, 163, 166, 169,
    172, 175, 178, 181, 184, 187, 190, 193, 196, 199, 202, 205, 208, 211, 214, 217,
    220, 223, 226, 228, 231, 233, 236, 238, 240, 242, 244, 246, 248, 250, 251, 253,
];

pub static ENV_FALL2: [u8; 128] = [
    254, 254, 253, 253, 252, 251, 251, 250, 250, 249, 248, 248, 247, 247, 246, 246,
    245, 244, 244, 243, 243, 242, 242, 241, 240, 240, 239, 238, 238, 237, 236, 235,
    234, 234, 233, 232, 231, 230, 229, 228, 227, 226, 225, 224, 222, 221, 220, 219,
    217, 216, 214, 213, 211, 210, 208, 206, 204, 203, 201, 199, 197, 195, 192, 190,
    188, 185, 183, 181, 178, 175, 173, 170, 167, 164, 161, 158, 154, 151, 148, 144,
    141, 137, 133, 129, 125, 121, 117, 113, 109, 104, 100, 97, 94, 91, 87, 84,
    81, 77, 74, 70, 67, 64, 60, 57, 53, 50, 46, 42, 39, 35, 31, 28,
    24, 20, 17, 13, 11, 9, 7, 5, 4, 3, 2, 1, 0, 0, 0, 0,
];

pub static ENV_FALLRISE3: [u8; 128] = [
    254, 255, 255, 255, 255, 255, 254, 253, 252, 250, 248, 246, 244, 241, 238, 235,
    232, 229, 225, 222, 218, 214, 210, 205, 201, 196, 191, 186, 182, 176, 171, 166,
    161, 156, 150, 145, 139, 134, 128, 123, 117, 111, 106, 100, 95, 89, 84, 79,
    73, 68, 63, 58, 53, 48, 43, 38, 34, 29, 25, 21, 17, 13, 10, 7,
    4, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 4, 5,
    7, 9, 11, 13, 16, 18, 21, 24, 27, 30, 34, 37, 41, 45, 49, 53,
    58, 62, 67, 72, 76, 81, 87, 91, 94, 98, 101, 104, 107, 110, 113, 116,
    118, 120, 123, 124, 126, 128, 129, 130, 131, 131, 132, 132, 131, 131, 130, 129,
];

pub static ENV_FALLRISE4: [u8; 128] = [
    114, 114, 113, 113, 112, 111, 109, 108, 106, 104, 102, 100, 97, 95, 92, 90,
    87, 84, 81, 78, 75, 72, 69, 66, 63, 59, 56, 53, 50, 47, 44, 41,
    38, 35, 32, 29, 27, 24, 22, 20, 18, 16, 14, 12, 11, 10, 9, 8,
    7, 7, 7, 7, 7, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6,
    7, 7, 8, 9, 10, 12, 13, 15, 16, 18, 20, 22, 24, 27, 29, 32,
    35, 38, 41, 44, 47, 51, 55, 59, 63, 67, 71, 76, 81, 86, 91, 96,
    101, 106, 111, 116, 121, 127, 132, 137, 143, 149, 155, 161, 167, 173, 179, 186,
    192, 199, 206, 213, 220, 227, 234, 241, 245, 247, 250, 252, 253, 254, 255, 255,
];

pub static ENV_RISEFALLRISE: [u8; 128] = [
    127, 127, 127, 128, 129, 131, 132, 135, 137, 140, 143, 146, 150, 153, 157, 161,
    165, 170, 174, 178, 183, 187, 192, 197, 201, 205, 210, 214, 218, 222, 226, 230,
    234, 237, 240, 243, 245, 248, 250, 251, 252, 253, 254, 254, 253, 252, 251, 249,
    247, 244, 240, 236, 231, 226, 220, 213, 206, 198, 189, 180, 169, 158, 146, 136,
    130, 125, 119, 114, 108, 102, 96, 90, 84, 78, 73, 66, 60, 55, 50, 45,
    40, 36, 31, 27, 24, 20, 17, 14, 12, 9, 7, 6, 5, 4, 4, 4,
    4, 5, 6, 8, 10, 13, 16, 20, 24, 29, 35, 41, 47, 55, 62, 71,
    80, 90, 100, 112, 124, 131, 133, 136, 138, 140, 142, 143, 145, 146, 147, 147,
];

/// `envelope_data[]` — the 20-entry lookup table indexed by `PITCH*`.
pub static ENVELOPE_DATA: [&[u8; 128]; 20] = [
    &ENV_FALL,
    &ENV_FALL,
    &ENV_RISE,
    &ENV_RISE,
    &ENV_FRISE,
    &ENV_R_FRISE,
    &ENV_FRISE2,
    &ENV_R_FRISE2,
    &ENV_RISEFALL,
    &ENV_RISEFALL,
    &ENV_FALLRISE3,
    &ENV_FALLRISE3,
    &ENV_FALLRISE4,
    &ENV_FALLRISE4,
    &ENV_FALL2,
    &ENV_FALL2,
    &ENV_RISE2,
    &ENV_RISE2,
    &ENV_RISEFALLRISE,
    &ENV_RISEFALLRISE,
];