开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

开发者专栏

关注:1583

当前位置:游戏蛮牛 技术专区 开发者专栏

__________________________________________________________________________________
开发者干货区版块规则:

  1、文章必须是图文形式。(至少2幅图)
      2、文章字数必须保持在1500字节以上。(编辑器右下角有字数检查)
      3、本版块只支持在游戏蛮牛原创首发,不支持转载。
      4、本版块回复不得无意义,如:顶、呵呵、不错......【真的会扣分的哦】
      5、......
__________________________________________________________________________________
查看: 1033|回复: 8

[周玉杰] 万能框架之万能变声

[复制链接]  [移动端链接]
排名
32628
昨日变化
70

16

主题

61

帖子

280

积分

Rank: 9Rank: 9Rank: 9

UID
144504
好友
5
蛮牛币
2385
威望
0
注册时间
2016-4-5
在线时间
51 小时
最后登录
2017-1-4

专栏作家

发表于 2016-11-23 12:19:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册帐号

x
        最近忙于万能框架 kismet的 研发,框架一直在优化  很少写文章了 …… 实在抱歉  入正题         万能变声  是跟大家开个玩笑 ……  


        实现一个变声的东西  一般都使用soundtouch  以前做ios 的时候 弄过   原生的 soundtouch.dll 只能适用于window 即使wrap 一下  所以必需 分平台弄m 最近发现一个 在c# 实现的库  我就把它放unity3d 里面 可以实现 跨平台的 不用分平台去弄了!
     但是有一点  这个库呢 是 .net 4.0 以上的  我就改造改造  把它弄成  .net 2.0  !

    大致步骤 :
   1,第一步 实现录音

  playAudio = GetComponent<AudioSource>();
  playAudio.clip =Microphone.Start("Test", true, 10, 8000);  这个 unity3d 原生的  就可以实现

终止 也很容易  Microphone.End("Test");

2,第二步  提取 采样片断
        float[] tempSamples; //临时数据存储
        //采样长度*声道数
        tempSamples = new float[playAudio.clip.samples * playAudio.clip.channels];
        playAudio.clip.GetData(tempSamples, 0);


3,第三步 从把片断的数据变一下

           var soundTouch = new SoundTouch<TSampleType, TLongSampleType>();

        int sampleRate = audioRate;
        int channels = audioChannel;
        soundTouch.SetSampleRate(sampleRate);
        soundTouch.SetChannels(channels);
          soundTouch.SetTempo(tmpTempo);
        soundTouch.SetTempoChange(tmpTempoChange);
        soundTouch.SetPitchSemiTones(tmpPitchSemiTones);

        soundTouch.SetPitchOctaves(tmpPiatchOctave) ;
         soundTouch.SetRate(tmpRate);
        soundTouch.SetRateChange(tmpRateChange);
        soundTouch.SetSetting(SettingId.UseQuickseek, 0);
        soundTouch.SetSetting(SettingId.UseAntiAliasFilter,  0 );
        soundTouch.SetSetting(SettingId.SequenceDurationMs, 40);
        soundTouch.SetSetting(SettingId.SeekwindowDurationMs, 15);
        soundTouch.SetSetting(SettingId.OverlapDurationMs, 8);
        soundTouch.PutSamples(tempSamples, tempSamples.Length / audioChannel);   //这步是放入

        float[] recvSamples = new float[tempSamples.Length]; ;
        int  nSamples = soundTouch.ReceiveSamples(recvSamples, tempSamples.Length);  // 这步是变声后出来的数据

        soundTouch.Flush();

4,第四步  将数据片断 再重新放入  unity3d 中

       AudioClip myClip = AudioClip.Create("myAudio", recvSamples.Length, audioChannel, audioRate, false);
        myClip.SetData(recvSamples, 0);
        playAudio.clip = myClip;
        playAudio.loop = false;

        playAudio.Play();


ok  大功告成 !!
    最后给出工程下载链接   
  下载地址:http://pan.baidu.com/s/1gfKAIiv  密码:ps2l





评分

参与人数 2蛮牛币 +11 鲜花 +11 收起 理由
网虫虫 + 5 + 5 很给力!
哪来的胖子 + 6 + 6 赞一个!

查看全部评分


回复

使用道具 举报

5熟悉之中
633/1000
排名
3268
昨日变化
2

0

主题

73

帖子

633

积分

Rank: 5Rank: 5

UID
56623
好友
0
蛮牛币
927
威望
0
注册时间
2014-11-20
在线时间
270 小时
最后登录
2017-2-24
发表于 2016-11-25 10:47:40 | 显示全部楼层
..DEMO中就看到原来的例子了,没看到哪个是变声的啊

回复 支持 反对

使用道具 举报

排名
5171
昨日变化
4

12

主题

71

帖子

610

积分

Rank: 9Rank: 9Rank: 9

UID
178893
好友
9
蛮牛币
1738
威望
0
注册时间
2016-10-28
在线时间
271 小时
最后登录
2017-2-20

专栏作家

发表于 2016-11-25 16:21:47 | 显示全部楼层
你的网站收藏了。

回复

使用道具 举报

排名
32628
昨日变化
70

16

主题

61

帖子

280

积分

Rank: 9Rank: 9Rank: 9

UID
144504
好友
5
蛮牛币
2385
威望
0
注册时间
2016-4-5
在线时间
51 小时
最后登录
2017-1-4

专栏作家

 楼主| 发表于 2016-11-28 09:46:58 | 显示全部楼层
zy1411 发表于 2016-11-25 10:47
..DEMO中就看到原来的例子了,没看到哪个是变声的啊

调节 右边的slider参数

回复 支持 反对

使用道具 举报

排名
32628
昨日变化
70

16

主题

61

帖子

280

积分

Rank: 9Rank: 9Rank: 9

UID
144504
好友
5
蛮牛币
2385
威望
0
注册时间
2016-4-5
在线时间
51 小时
最后登录
2017-1-4

专栏作家

 楼主| 发表于 2016-11-28 09:47:21 | 显示全部楼层
网虫虫 发表于 2016-11-25 16:21
你的网站收藏了。

会努力更新  

回复 支持 反对

使用道具 举报

5熟悉之中
582/1000
排名
6020
昨日变化
75

1

主题

326

帖子

582

积分

Rank: 5Rank: 5

UID
165382
好友
4
蛮牛币
413
威望
0
注册时间
2016-9-1
在线时间
113 小时
最后登录
2017-2-26
发表于 2016-11-28 14:46:50 | 显示全部楼层
谢谢楼主的分享哈黑

回复 支持 反对

使用道具 举报

6蛮牛粉丝
1020/1500
排名
1898
昨日变化
2

12

主题

130

帖子

1020

积分

Rank: 6Rank: 6Rank: 6

UID
63937
好友
6
蛮牛币
1469
威望
0
注册时间
2014-12-27
在线时间
314 小时
最后登录
2017-2-22
QQ
发表于 2016-11-29 11:31:36 | 显示全部楼层
好好好好好好好好好好好好好好好好好好

回复 支持 反对

使用道具 举报

5熟悉之中
726/1000
排名
2337
昨日变化
1

0

主题

82

帖子

726

积分

Rank: 5Rank: 5

UID
95167
好友
0
蛮牛币
1278
威望
0
注册时间
2015-4-24
在线时间
236 小时
最后登录
2017-2-9
QQ
发表于 2016-12-1 16:20:59 | 显示全部楼层
吼吼吼吼 好东西

回复

使用道具 举报

0

主题

5

帖子

36

积分

Rank: 1

UID
103355
好友
0
蛮牛币
77
威望
0
注册时间
2015-5-26
在线时间
33 小时
最后登录
2017-1-25
发表于 2017-1-22 18:39:59 | 显示全部楼层
感谢楼主的分享

我在使用的时候 发现调节的参数 只有 pitch and octave 有效果 其他的参数调节了也没效果

楼主使用的时候 有这个问题吗?

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

快速回复 返回顶部 返回列表