{
+
+ let polyphone = try!(self.arpabet_dictionary.get_polyphone(word)
+ .ok_or(SynthesisError::ArpabetEntryDne));
+
+ let mut padding = None;
+ if debug_padding_between_phones.is_some() {
+ let pause = generate_pause(debug_padding_between_phones.unwrap());
+ padding = Some(pause)
+ }
+
+ info!(target: "synthesis",
+ "Word '{}' maps to polyphone '{:?}'", word, polyphone);
+
+ let end = polyphone.len() - 1;
+ let mut output_waveform = Vec::new();
+
+ for i in 0..polyphone.len() {
+ let phoneme = &polyphone[i];
+
+ // Attempt to read a "begin" or "end" monophone.
+ let mut read_results = if i == 0 {
+ self.audiobank.get_begin_phoneme(speaker.as_str(), &phoneme)
+ } else if i == end {
+ self.audiobank.get_end_phoneme(speaker.as_str(), &phoneme)
+ } else {
+ None
+ };
+
+ // Read a regular monophone.
+ if read_results.is_none() {
+ read_results = self.audiobank.get_phoneme(speaker.as_str(), &phoneme);
+ }
+
+ let waveform = try!(read_results.ok_or(SynthesisError::MonophoneDne));
+
+ if padding.is_some() {
+ output_waveform.extend(padding.clone().unwrap());
+ }
+
+ output_waveform.extend(waveform);
+ }
+
+ Ok(output_waveform)
+ }
+}
diff --git a/web/old.html b/web/old.html
index 96060a3ffa..60675bd89d 100644
--- a/web/old.html
+++ b/web/old.html
@@ -31,28 +31,23 @@
-
-
-
-
-
-
-
-
-
+
-
+
+
+
+
+
+ Use _begin and _end n-phone samples
@@ -62,14 +57,14 @@
-
-
+
+
-
-
+
+