vc_king
驱动牛犊
驱动牛犊
  • 注册日期2002-10-19
  • 最后登录2008-11-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2218回复:9

help!!!谁懂语音变速不变调的技术???

楼主#
更多 发布于:2002-12-24 14:16
最近老板叫我做语音的变速不变调的程序,基于PC的,最简单的做法就是向采集来的数据添加额外的数据,但效果不是很好,语音衔接不好,复杂点的开发时间又不够,HELP!!!
                                     小弟在这儿谢谢大家了
                                     vc_king@163.com
johnxliu
驱动牛犊
驱动牛犊
  • 注册日期2002-12-06
  • 最后登录2004-01-31
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-01-04 10:49
No scores, who likes to answer?
vc_king
驱动牛犊
驱动牛犊
  • 注册日期2002-10-19
  • 最后登录2008-11-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-01-05 16:10
楼上的这位兄台,分给现金比起来,你选哪个?
技术这个东西为什么在中国始终发展得不是很快,一句话“没M哪个做哟”,不过也是,没得事,如果我觉得你的方案可行,你开个价嘛!
johnxliu
驱动牛犊
驱动牛犊
  • 注册日期2002-12-06
  • 最后登录2004-01-31
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-01-06 14:17
Try to skip some milliseconds of voice data, then it shall be faster

and try to repeat some milliseconds of voice data, it shall get slower
QuakeGod
驱动牛犊
驱动牛犊
  • 注册日期2003-02-14
  • 最后登录2004-11-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-02-14 05:46
it\'s too easy
这很简单
以下详细说明

举例:
问题A: 一个1秒的正弦波,想把它变成2秒,但不变调
1,如果简单的在后面添加一个副本,显然不行,衔接有问题
2,分成若干段,然后各自复制成副本,插在中间,还是不行,除非段的长度正好是正弦波周期的整数倍.
3,测出正弦波的周期,分段,复制,合成,OK!
4,测出正弦波的频率,然后合成成一个2秒的正弦波,OK!!!!
5,要注意正弦波的起始相位
问题B:两个正弦频率合成的声音,1秒,变成2秒,不变调
1,测出正弦波的周期,分段,复制,合成,NO!!!!,因为两个正弦波的周期不同,起始相位也不同,测不出周期,
2,分别测出两个正弦波的频率,起始相位,再合成成2秒的,OK!!!!!
正要用到DCT或FFT了.
问题C;一个1秒的波形,前0.5秒频率f1,后0.5秒频率f2,变成2秒,频率不变.
1,将声音分成若干段处理,每段时间约1/30秒,变成2/30秒,按照前面B2的方法,然后30个合成为2秒,OK but 30HZ以下的声音听不到了,不过没有关系,不太影响.
2,解决办法,记录每个小片段的平均值,再在新生成的采样中相加,补偿回来,缺点,效果不太好.
3,解决办法2,以1/8秒的时间为片段再对原始波形采样,但这次只采集8hz-30hz的频率,然后合成到新生成的波形中去,OK
问题D:一个10秒钟的声音信号,变成X秒,声音频率不变,
这就简单了,按照问题C的解决办法就搞定了.
QuakeGod
驱动牛犊
驱动牛犊
  • 注册日期2003-02-14
  • 最后登录2004-11-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-02-14 05:49
说了这么多,你们懂了吗?
好像MP3中声音的压缩就采用了这种方法
jiaoyu
驱动牛犊
驱动牛犊
  • 注册日期2003-11-09
  • 最后登录2003-12-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-12-14 23:52
好贴,顶
可乐驴
Sunbeam
驱动小牛
驱动小牛
  • 注册日期2001-10-29
  • 最后登录2010-01-29
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望12点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-12-15 16:03
呵呵,这个问题要想很快解决的好,我认为用M$的DSOUND模块最好,效果不错。 如果没有好的源代码,从理论基础做起,估计得很长时间吧。
堂堂正正做人,明明白白做事
CyberQiQi
驱动牛犊
驱动牛犊
  • 注册日期2004-06-03
  • 最后登录2021-02-09
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望54点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
  • 社区居民
8楼#
发布于:2004-06-08 17:52
很好的傥!
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-06-11 18:16
it's too easy
这很简单
以下详细说明

举例:
问题A: 一个1秒的正弦波,想把它变成2秒,但不变调
1,如果简单的在后面添加一个副本,显然不行,衔接有问题
2,分成若干段,然后各自复制成副本,插在中间,还是不行,除非段的长度正好是正弦波周期的整数倍.
3,测出正弦波的周期,分段,复制,合成,OK!
4,测出正弦波的频率,然后合成成一个2秒的正弦波,OK!!!!
5,要注意正弦波的起始相位
问题B:两个正弦频率合成的声音,1秒,变成2秒,不变调
1,测出正弦波的周期,分段,复制,合成,NO!!!!,因为两个正弦波的周期不同,起始相位也不同,测不出周期,
2,分别测出两个正弦波的频率,起始相位,再合成成2秒的,OK!!!!!
正要用到DCT或FFT了.
问题C;一个1秒的波形,前0.5秒频率f1,后0.5秒频率f2,变成2秒,频率不变.
1,将声音分成若干段处理,每段时间约1/30秒,变成2/30秒,按照前面B2的方法,然后30个合成为2秒,OK but 30HZ以下的声音听不到了,不过没有关系,不太影响.
2,解决办法,记录每个小片段的平均值,再在新生成的采样中相加,补偿回来,缺点,效果不太好.
3,解决办法2,以1/8秒的时间为片段再对原始波形采样,但这次只采集8hz-30hz的频率,然后合成到新生成的波形中去,OK
问题D:一个10秒钟的声音信号,变成X秒,声音频率不变,
这就简单了,按照问题C的解决办法就搞定了.
 


首先计算机得到的已经是数字信号,如果还原成正/余旋曲线,精度怎么保证。
另外,数字信号本生已经不是完整、单一的简单正/余旋曲线,当然不是只正/余旋曲线起使位置不同,可能得到的已经是变形的正/余旋曲线曲线,在PC端怎么处理?
当然,如果是在声卡本身来做这样的事情,应该会简单很多。

问题:
不知道兄弟对这些是怎样处理的?很想听听这为仁兄的意见
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
游客

返回顶部