语音xml:lang =" en-US" XML:性别="男性" name =" Microsoft Server语音文本始终为女性语音

时间:2018-05-14 16:04:08

标签: node.js speech-recognition text-to-speech azure-cognitive-services bing-speech

我只是想开发一个将文本转换为语音的功能。这里的问题是,转换总是发生在女性的声音中,即使我已经指定xml:gender为男性。这是我的功能,无论如何我可以用男声将我的文本转换为音频吗?

textToSpeech("This is a test to check the conversion of text to speech");
function textToSpeech(text: string) {
    const requestOptions: request.CoreOptions = {
        headers: {
            "Ocp-Apim-Subscription-Key": config.speech.bingSpeech.key1,
        }
    };
    request.post(
        `${config.speech.bingSpeech.authEndPoint}/issueToken`,
        requestOptions,
        (err, response, body) => {
            const accessToken = response.body;
            const payLoad = `
            <speak version="1.0" xml:lang="en-US">
            <voice xml:lang="en-US" xml:gender="Male" name="Microsoft Server Speech Text to Speech Voice (en-US, ZiraRus)">
            ${text}
            </voice>
            </speak>
            `;
            const requestOptions: request.CoreOptions = {
                headers: {
                    "X-Microsoft-OutputFormat": "audio-16khz-128kbitrate-mono-mp3",
                    "Content-Type": "application/ssml+xml",
                    "Host": "speech.platform.bing.com",
                    "Content-Length": payLoad.length,
                    "Authorization": "Bearer " + accessToken,
                    "User-Agent": "NodeJS"
                },
                body: payLoad
            };

            request.post(
                config.speech.bingSpeech.synthesizeUrl,
                requestOptions
            ).pipe(fs.createWriteStream(__dirname + "/output.mp3"));
        }
    )
}

1 个答案:

答案 0 :(得分:1)

根据您的说明,我检查了3.2.1 voice Element关于gendername属性,如下所示:

  
      
  • 性别:可选属性表示说出所包含文字的语音的首选性别。枚举值为:&#34;男性&#34;,&#34;女性&#34;,&#34;中性&#34;或空字符串&#34;&#34;。

  •   
  • name:可选属性,表示特定于处理器的语音名称,用于说出包含的文本。该值可以是从顶部首选项向下排序的空格分隔的名称列表,或者是空字符串&#34;&#34;。因此,名称不得包含任何空格。

  •   

根据您的代码,我检查了Supported locales and voice fonts

enter image description here

对于男声,您可能还需要将name元素的voice属性设置为Microsoft Server Speech Text to Speech Voice (en-US, BenjaminRUS)