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

扫一扫,访问微社区

开发者专栏

关注:1876

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

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

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

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

[复制链接]  [移动端链接]
排名
31673
昨日变化
33

16

主题

63

帖子

307

积分

Rank: 9Rank: 9Rank: 9

UID
144504
好友
5
蛮牛币
2417
威望
0
注册时间
2016-4-5
在线时间
64 小时
最后登录
2017-8-23

专栏作家

发表于 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





评分

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

查看全部评分


回复

使用道具 举报

5熟悉之中
682/1000
排名
3490
昨日变化
3

0

主题

75

帖子

682

积分

Rank: 5Rank: 5

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

回复 支持 反对

使用道具 举报

排名
2280
昨日变化
7

28

主题

142

帖子

1473

积分

Rank: 9Rank: 9Rank: 9

UID
178893
好友
13
蛮牛币
2489
威望
0
注册时间
2016-10-28
在线时间
617 小时
最后登录
2017-9-26

专栏作家

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

回复

使用道具 举报

排名
31673
昨日变化
33

16

主题

63

帖子

307

积分

Rank: 9Rank: 9Rank: 9

UID
144504
好友
5
蛮牛币
2417
威望
0
注册时间
2016-4-5
在线时间
64 小时
最后登录
2017-8-23

专栏作家

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

调节 右边的slider参数

回复 支持 反对

使用道具 举报

排名
31673
昨日变化
33

16

主题

63

帖子

307

积分

Rank: 9Rank: 9Rank: 9

UID
144504
好友
5
蛮牛币
2417
威望
0
注册时间
2016-4-5
在线时间
64 小时
最后登录
2017-8-23

专栏作家

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

会努力更新  

回复 支持 反对

使用道具 举报

5熟悉之中
887/1000
排名
3629
昨日变化
4

4

主题

352

帖子

887

积分

Rank: 5Rank: 5

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

回复 支持 反对

使用道具 举报

6蛮牛粉丝
1277/1500
排名
1630
昨日变化
2

15

主题

165

帖子

1277

积分

Rank: 6Rank: 6Rank: 6

UID
63937
好友
7
蛮牛币
2387
威望
0
注册时间
2014-12-27
在线时间
401 小时
最后登录
2017-9-26

迈向小康

QQ
发表于 2016-11-29 11:31:36 | 显示全部楼层
好好好好好好好好好好好好好好好好好好

回复 支持 反对

使用道具 举报

5熟悉之中
786/1000
排名
2514
昨日变化

0

主题

82

帖子

786

积分

Rank: 5Rank: 5

UID
95167
好友
0
蛮牛币
1361
威望
0
注册时间
2015-4-24
在线时间
264 小时
最后登录
2017-6-14
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 有效果 其他的参数调节了也没效果

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

回复 支持 反对

使用道具 举报

5熟悉之中
707/1000
排名
2696
昨日变化
3

0

主题

79

帖子

707

积分

Rank: 5Rank: 5

UID
41378
好友
1
蛮牛币
916
威望
0
注册时间
2014-8-23
在线时间
214 小时
最后登录
2017-9-26
发表于 2017-6-1 11:00:01 | 显示全部楼层
是的  只有 pitch and octave 有效果  是操作姿势不对吗

回复 支持 反对

使用道具 举报

排名
2077
昨日变化
8

24

主题

209

帖子

1858

积分

Rank: 9Rank: 9Rank: 9

UID
175038
好友
26
蛮牛币
393
威望
0
注册时间
2016-10-12
在线时间
419 小时
最后登录
2017-9-25

专栏作家活力之星锦衣玉食

发表于 2017-8-22 10:51:11 | 显示全部楼层
thanks for sharing

回复 支持 反对

使用道具 举报

3偶尔光临
282/300
排名
9479
昨日变化
106

0

主题

51

帖子

282

积分

Rank: 3Rank: 3Rank: 3

UID
132849
好友
0
蛮牛币
98
威望
0
注册时间
2015-12-28
在线时间
149 小时
最后登录
2017-9-26
发表于 2017-9-14 15:23:08 | 显示全部楼层
谢谢楼主啊 正在愁这个
[发帖际遇]: wsxm 乐于助人,奖励 3 蛮牛币. 幸运榜 / 衰神榜

回复 支持 反对

使用道具 举报

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

本版积分规则

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