NSSpeechSynthesizer紧凑的声音

时间:2012-02-25 11:34:13

标签: xcode text-to-speech voiceover

我写信给你一个关于NSSpeechSynthesizer的问题。真的对我来说很完美,我看到的唯一奇怪的事情(对我来说)是可用的声音都是优质的声音。

    NSArray* voices;
    voices = [NSpeechSynthesizer availableVoices];

当我打印阵列中的所有声音时,我可以看到,例如,Silvia和Paolo,但不是Silvia Compact和Paolo Compact。

对于意大利语而言,不幸的是,高级版本有很多错误,他们说的是紧凑的声音没有。所以我希望能够选择Compact版本......你们中的任何人都知道如何让它们可用吗?

非常感谢...

2 个答案:

答案 0 :(得分:0)

您可以使用availableVoices,只要语音以“.premium”结尾,请尝试将“.premium”替换为“.compact”。这只适用于用户安装的声音,但对用户来说应该不会感到惊讶。

答案 1 :(得分:-1)

您可以使用标识符设置(Alice是紧凑的意大利语):

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mRelativeLayout = (RelativeLayout) findViewById(R.id.relativeLayout);
    LightSide.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            buttonOnClick(v);
        }
    });
    DarkSide.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            buttonOnClick(v);
        }
    });
    Chubaka.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            buttonOnClick(v);
        }
    });
}

private void buttonOnClick(View v) {
    switch (v.getId()) {
        case R.id.LightSide:
            LightSide.setText("LightSide");
            mRelativeLayout.setBackgroundColor(getResources().getColor(R.color.colorPrimary));
            break;
        case R.id.DarkSide:
            DarkSide.setText("DarkSide");
            mRelativeLayout.setBackgroundColor(getResources().getColor(R.color.colorRed));
            break;
        case R.id.Chubaka:
            Chubaka.setText("Chubakka");
            mRelativeLayout.setBackgroundColor(getResources().getColor(R.color.colorBrown));
            break;
    }
}

在文本之后放置语音,因为我在语音之前设置了语音参数时遇到了问题。