{"action":"created","issue":{"url":"https://api.github.com/repos/marytts/marytts/issues/448","labels_url":"https://api.github.com/repos/marytts/marytts/issues/448/labels{/name}","comments_url":"https://api.github.com/repos/marytts/marytts/issues/448/comments","events_url":"https://api.github.com/repos/marytts/marytts/issues/448/events","html_url":"https://github.com/marytts/marytts/issues/448","id":123681490,"number":448,"title":"unit selection: final boundary durations synthesized 50% shorter than requested","user":{"login":"psibre","id":1278639,"avatar_url":"https://avatars.githubusercontent.com/u/1278639?v=3","gravatar_id":"","url":"https://api.github.com/users/psibre","html_url":"https://github.com/psibre","followers_url":"https://api.github.com/users/psibre/followers","following_url":"https://api.github.com/users/psibre/following{/other_user}","gists_url":"https://api.github.com/users/psibre/gists{/gist_id}","starred_url":"https://api.github.com/users/psibre/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/psibre/subscriptions","organizations_url":"https://api.github.com/users/psibre/orgs","repos_url":"https://api.github.com/users/psibre/repos","events_url":"https://api.github.com/users/psibre/events{/privacy}","received_events_url":"https://api.github.com/users/psibre/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/marytts/marytts/labels/bug","name":"bug","color":"fc2929"}],"state":"open","locked":false,"assignee":{"login":"psibre","id":1278639,"avatar_url":"https://avatars.githubusercontent.com/u/1278639?v=3","gravatar_id":"","url":"https://api.github.com/users/psibre","html_url":"https://github.com/psibre","followers_url":"https://api.github.com/users/psibre/followers","following_url":"https://api.github.com/users/psibre/following{/other_user}","gists_url":"https://api.github.com/users/psibre/gists{/gist_id}","starred_url":"https://api.github.com/users/psibre/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/psibre/subscriptions","organizations_url":"https://api.github.com/users/psibre/orgs","repos_url":"https://api.github.com/users/psibre/repos","events_url":"https://api.github.com/users/psibre/events{/privacy}","received_events_url":"https://api.github.com/users/psibre/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/marytts/marytts/milestones/3","html_url":"https://github.com/marytts/marytts/milestones/5.2","labels_url":"https://api.github.com/repos/marytts/marytts/milestones/3/labels","id":584116,"number":3,"title":"5.2","description":"","creator":{"login":"psibre","id":1278639,"avatar_url":"https://avatars.githubusercontent.com/u/1278639?v=3","gravatar_id":"","url":"https://api.github.com/users/psibre","html_url":"https://github.com/psibre","followers_url":"https://api.github.com/users/psibre/followers","following_url":"https://api.github.com/users/psibre/following{/other_user}","gists_url":"https://api.github.com/users/psibre/gists{/gist_id}","starred_url":"https://api.github.com/users/psibre/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/psibre/subscriptions","organizations_url":"https://api.github.com/users/psibre/orgs","repos_url":"https://api.github.com/users/psibre/repos","events_url":"https://api.github.com/users/psibre/events{/privacy}","received_events_url":"https://api.github.com/users/psibre/received_events","type":"User","site_admin":false},"open_issues":9,"closed_issues":41,"state":"open","created_at":"2014-03-01T00:26:47Z","updated_at":"2015-12-23T15:52:18Z","due_on":"2015-12-30T23:00:00Z","closed_at":null},"comments":13,"created_at":"2015-12-23T15:51:21Z","updated_at":"2016-01-04T21:00:14Z","closed_at":null,"body":"Using the `cmu-slt` unit-selection voice, the `TEXT`\r\n```\r\nuh.\r\n\r\nuh.\r\n\r\noh.\r\n```\r\nhas boundary durations predicted as `ACOUSTPARAMS`\r\n```xml\r\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<maryxml xmlns=\"http://mary.dfki.de/2002/MaryXML\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"0.5\" xml:lang=\"en-US\">\r\n  <p>\r\n    <s>\r\n      <phrase>\r\n        <t accent=\"!H*\" g2p_method=\"lexicon\" ph=\"' V\" pos=\"UH\">\r\nuh\r\n<syllable accent=\"!H*\" ph=\"V\" stress=\"1\"><ph d=\"398\" end=\"0.398275\" f0=\"(0,165) (50,267) (100,235)\" p=\"V\"/></syllable>\r\n</t>\r\n        <t pos=\".\">\r\n.\r\n</t>\r\n        <boundary breakindex=\"5\" duration=\"400\" tone=\"L-L%\"/>\r\n      </phrase>\r\n    </s>\r\n  </p>\r\n  <p>\r\n    <s>\r\n      <phrase>\r\n        <t accent=\"!H*\" g2p_method=\"lexicon\" ph=\"' V\" pos=\"UH\">\r\nuh\r\n<syllable accent=\"!H*\" ph=\"V\" stress=\"1\"><ph d=\"398\" end=\"0.398275\" f0=\"(0,165) (50,267) (100,235)\" p=\"V\"/></syllable>\r\n</t>\r\n        <t pos=\".\">\r\n.\r\n</t>\r\n        <boundary breakindex=\"5\" duration=\"400\" tone=\"L-L%\"/>\r\n      </phrase>\r\n    </s>\r\n  </p>\r\n  <p>\r\n    <s>\r\n      <phrase>\r\n        <t accent=\"!H*\" g2p_method=\"lexicon\" ph=\"' @U\" pos=\"UH\">\r\noh\r\n<syllable accent=\"!H*\" ph=\"@U\" stress=\"1\"><ph d=\"338\" end=\"0.338394\" f0=\"(0,165) (50,311) (100,235)\" p=\"@U\"/></syllable>\r\n</t>\r\n        <t pos=\".\">\r\n.\r\n</t>\r\n        <boundary breakindex=\"5\" duration=\"400\" tone=\"L-L%\"/>\r\n      </phrase>\r\n    </s>\r\n  </p>\r\n</maryxml>\r\n```\r\nNote the constant `duration=\"400\"` (ms) for each `boundary` element.\r\n\r\nBut when this is actually synthesized, the `REALISED_ACOUSTPARAMS` becomes\r\n```xml\r\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<maryxml xmlns=\"http://mary.dfki.de/2002/MaryXML\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"0.5\" xml:lang=\"en-US\">\r\n  <p>\r\n    <s>\r\n      <phrase>\r\n        <t accent=\"!H*\" g2p_method=\"lexicon\" ph=\"' V\" pos=\"UH\">\r\nuh\r\n<syllable accent=\"!H*\" ph=\"V\" stress=\"1\"><ph d=\"88\" end=\"0.088750005\" f0=\"(0,165) (50,267) (100,235)\" p=\"V\" units=\"V_L arctic_a0146 10273 0.045; V_R arctic_a0146 10274 0.04375\"/></syllable>\r\n</t>\r\n        <t pos=\".\">\r\n.\r\n</t>\r\n        <boundary breakindex=\"5\" duration=\"200\" tone=\"L-L%\" units=\"__L arctic_b0385 67582 0.2\"/>\r\n      </phrase>\r\n    </s>\r\n  </p>\r\n  <p>\r\n    <s>\r\n      <phrase>\r\n        <t accent=\"!H*\" g2p_method=\"lexicon\" ph=\"' V\" pos=\"UH\">\r\nuh\r\n<syllable accent=\"!H*\" ph=\"V\" stress=\"1\"><ph d=\"88\" end=\"0.088750005\" f0=\"(0,165) (50,267) (100,235)\" p=\"V\" units=\"V_L arctic_a0146 10273 0.045; V_R arctic_a0146 10274 0.04375\"/></syllable>\r\n</t>\r\n        <t pos=\".\">\r\n.\r\n</t>\r\n        <boundary breakindex=\"5\" duration=\"200\" tone=\"L-L%\" units=\"__L arctic_b0385 67582 0.2\"/>\r\n      </phrase>\r\n    </s>\r\n  </p>\r\n  <p>\r\n    <s>\r\n      <phrase>\r\n        <t accent=\"!H*\" g2p_method=\"lexicon\" ph=\"' @U\" pos=\"UH\">\r\noh\r\n<syllable accent=\"!H*\" ph=\"@U\" stress=\"1\"><ph d=\"246\" end=\"0.2468125\" f0=\"(0,165) (50,311) (100,235)\" p=\"@U\" units=\"@U_L arctic_a0105 7295 0.0880625; @U_R arctic_b0352 65184 0.15875\"/></syllable>\r\n</t>\r\n        <t pos=\".\">\r\n.\r\n</t>\r\n        <boundary breakindex=\"5\" duration=\"200\" tone=\"L-L%\" units=\"__L arctic_b0352 65185 0.2\"/>\r\n      </phrase>\r\n    </s>\r\n  </p>\r\n</maryxml>\r\n```\r\nNote how the specified `boundary duration`s have been halved from 400 to 200 ms.\r\n\r\nFurthermore, by inspecting the `PRAAT_TEXTGRID` or similar, we can plainly confirm that the boundaries are only 0.2 seconds long.\r\n<img width=\"1368\" alt=\"uh-uh-oh\" src=\"https://cloud.githubusercontent.com/assets/1278639/11979388/37fc4378-a993-11e5-8db2-5c7687464249.png\">\r\nAnd the *units* tier tells us which units from the unit-selection database are selected to render the boundaries as pauses.\r\n\r\nInterestingly, dumping and inspecting the voice data reveals that those units (indices 67582 and 65185) are actually 0.1284 and 0.1529 seconds long, respectively.\r\n\r\n**TL;DR:** The `duration` attributes of `boundary` elements have their specified values reduced by 50% when synthesizing from the specified `ACOUSTPARAMS` to `REALISED_ACOUSTPARAMS`, and the lengths of the corresponding pauses are accordingly wrong."},"comment":{"url":"https://api.github.com/repos/marytts/marytts/issues/comments/168807241","html_url":"https://github.com/marytts/marytts/issues/448#issuecomment-168807241","issue_url":"https://api.github.com/repos/marytts/marytts/issues/448","id":168807241,"user":{"login":"psibre","id":1278639,"avatar_url":"https://avatars.githubusercontent.com/u/1278639?v=3","gravatar_id":"","url":"https://api.github.com/users/psibre","html_url":"https://github.com/psibre","followers_url":"https://api.github.com/users/psibre/followers","following_url":"https://api.github.com/users/psibre/following{/other_user}","gists_url":"https://api.github.com/users/psibre/gists{/gist_id}","starred_url":"https://api.github.com/users/psibre/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/psibre/subscriptions","organizations_url":"https://api.github.com/users/psibre/orgs","repos_url":"https://api.github.com/users/psibre/repos","events_url":"https://api.github.com/users/psibre/events{/privacy}","received_events_url":"https://api.github.com/users/psibre/received_events","type":"User","site_admin":false},"created_at":"2016-01-04T21:00:14Z","updated_at":"2016-01-04T21:00:14Z","body":"@seblemaguer How are you starting the Mary server? Just with the `marytts-server` script?"}}