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

扫一扫,访问微社区

开发者专栏

关注:1702

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

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

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

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

[复制链接]  [移动端链接]
排名
34871
昨日变化
17

16

主题

62

帖子

282

积分

Rank: 9Rank: 9Rank: 9

UID
144504
好友
5
蛮牛币
2392
威望
0
注册时间
2016-4-5
在线时间
52 小时
最后登录
2017-3-17

专栏作家

发表于 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熟悉之中
680/1000
排名
3197
昨日变化
5

0

主题

74

帖子

680

积分

Rank: 5Rank: 5

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

回复 支持 反对

使用道具 举报

排名
3461
昨日变化
2

17

主题

109

帖子

907

积分

Rank: 9Rank: 9Rank: 9

UID
178893
好友
10
蛮牛币
2179
威望
0
注册时间
2016-10-28
在线时间
401 小时
最后登录
2017-5-27

专栏作家

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

回复

使用道具 举报

排名
34871
昨日变化
17

16

主题

62

帖子

282

积分

Rank: 9Rank: 9Rank: 9

UID
144504
好友
5
蛮牛币
2392
威望
0
注册时间
2016-4-5
在线时间
52 小时
最后登录
2017-3-17

专栏作家

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

调节 右边的slider参数

回复 支持 反对

使用道具 举报

排名
34871
昨日变化
17

16

主题

62

帖子

282

积分

Rank: 9Rank: 9Rank: 9

UID
144504
好友
5
蛮牛币
2392
威望
0
注册时间
2016-4-5
在线时间
52 小时
最后登录
2017-3-17

专栏作家

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

会努力更新  

回复 支持 反对

使用道具 举报

5熟悉之中
801/1000
排名
3930
昨日变化
2

4

主题

350

帖子

801

积分

Rank: 5Rank: 5

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

回复 支持 反对

使用道具 举报

6蛮牛粉丝
1114/1500
排名
1794
昨日变化

13

主题

142

帖子

1114

积分

Rank: 6Rank: 6Rank: 6

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

回复 支持 反对

使用道具 举报

5熟悉之中
778/1000
排名
2346
昨日变化
2

0

主题

82

帖子

778

积分

Rank: 5Rank: 5

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

回复

使用道具 举报

0

主题

6

帖子

44

积分

Rank: 1

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

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

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

回复 支持 反对

使用道具 举报

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

本版积分规则

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