Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

能否有调节字间延迟功能 #29

Closed
zerobikappa opened this issue May 23, 2020 · 1 comment
Closed

能否有调节字间延迟功能 #29

zerobikappa opened this issue May 23, 2020 · 1 comment

Comments

@zerobikappa
Copy link

我使用默认的语音包没有问题,可是当我尝试使用自己制作的语音包时,会出现以下情况:
1.开头第一个字特别小声,不知道程序是不是采用渐入渐出的方式来播放语音;
2.文字模式时(ekho -vpinyin.我的语音包 "要读的字")两个字间总会有重叠,也就是感觉前一个字还没播完就开始播下一个字了。而注音模式时(ekho -vpinyi.我的语音包 [[yao4 du2 de5 zi4]])不会有重叠但反而会感觉每个字之间的间隔太久。

我尝试查看默认语音包的波形,发音前的静音时间大概是0.01秒。制作自己的语音包时我尝试使用0.1秒或更长的静音时间,仍然是有比较明显的重叠现象。
尝试命令中加入-s 参数但没什么用。
语音包是用audacity制作的,44100采码率的16bit wav音频,应该不会太难加载。
不知是不是有什么设定我没留意?

@hgneng
Copy link
Owner

hgneng commented May 25, 2020

  1. 程序并没有采用渐入渐出的方式播放。

  2. 为减少字间停顿,算法上是有让相邻字波形重叠的,重叠的比例根据经验调节,当音量少于一定阈值的部分允许重叠,参数是在程序里改的。如果字的录音音量较小,可能会出现重叠过多的情况。注音模式可能是没有重叠的(不是很确定,这个模块的代码很久没有改了)

-s参数是改变整体语速的,对字间重叠比例不影响。

以下是相关代码,你可以试试改这里面的参数重新编译来调试重叠效果:

src/libekho_impl.cpp

int EkhoImpl::writeToSonicStream(short *pcm, int frames, OverlapType type) {
  if (!mSonicStream) return 0;

  const int quiet_level = 4096; //1638;  // 音量低于(quiet_level / 65536)的部分重叠

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants