当前位置:   article > 正文

unity实现语音切换背景音乐_unity 切换背景音乐

unity 切换背景音乐

# 用C#语言实现语音识别切换背景音乐的功能

  介绍
在这篇博客中,我将向大家展示如何用C#语言和Unity引擎来实现一个简单的语音识别的功能,可以通过口令“切歌”来切换音乐。这个功能可以用于制作一些有趣的游戏或应用,让用户可以用自己的声音来控制场景中的元素。

步骤
1. 创建一个新的Unity项目
首先,我们需要创建一个新的Unity项目,选择3D模板,并命名为VoiceRecognitionDemo。

### 2. 导入音乐资源
然后

,我们需要导入一些音乐资源,作为我们要切换的音乐,你可以根据自己的喜好选择其他的音乐。将这些音乐文件拖拽到Unity项目中的Assets文件夹下,创建一个名为MusicPack的子文件夹,并将它们放入其中。

### 3. 创建一个背景音乐播放器
接下来,我们需要创建一个背景音乐播放器,用于播放和切换音乐。在Hierarchy窗口中,右键点击Create Empty,创建一个空的游戏对象,并命名为BGMPlayer。然后,在Inspector窗口中,点击Add Component,选择Audio > Audio Source,为该游戏对象添加一个Audio Source组件。在该组件的属性中,将Audio Clip设置为MusicPack文件夹中的任意一首音乐(比如Blues),并勾选Loop和Play On Awak

4. 创建一个语音识别器
接着,我们需要创建一个语音识别器,用于监听用户的语音指令,并执行相应的操作。在Hierarchy窗口中,右键点击Create Empty,创建一个空的游戏对象,并命名为VoiceRecognizer。然后,在Inspector窗口中,点击Add Component,选择New Script,为该游戏对象添加一个新的脚本组件,并将下面的代码粘贴进去。

  1. using System;
  2. using System.Text;
  3. using UnityEngine;
  4. using UnityEngine.Windows.Speech;
  5. public class keywordrecognizer : MonoBehaviour
  6. {
  7. [SerializeField]
  8. private AudioClip[] musicpack;
  9. [SerializeField]
  10. private string[] m_Keywords;
  11. private KeywordRecognizer m_Recognizer;
  12. void Start()
  13. {
  14. m_Recognizer = new KeywordRecognizer(m_Keywords);
  15. m_Recognizer.OnPhraseRecognized += OnPhraseRecognized;
  16. m_Recognizer.Start();
  17. }
  18. private void OnPhraseRecognized(PhraseRecognizedEventArgs args)
  19. {
  20. StringBuilder builder = new StringBuilder();
  21. builder.AppendFormat("{0} ({1}){2}", args.text, args.confidence, Environment.NewLine);
  22. builder.AppendFormat("\tTimestamp: {0}{1}", args.phraseStartTime, Environment.NewLine);
  23. builder.AppendFormat("\tDuration: {0} seconds{1}", args.phraseDuration.TotalSeconds, Environment.NewLine);
  24. if (args.text == "切歌")
  25. {
  26. Debug.Log('o');
  27. ChangeMusic();
  28. }
  29. Debug.Log(builder.ToString());
  30. }
  31. public void ChangeMusic()
  32. {
  33. // 获取bgmprefab游戏对象上附加的AudioSource组件
  34. AudioSource audioSource = GameObject.Find("bgmplayer").GetComponent<AudioSource>();
  35. // 获取AudioSource组件上设置的音频文件
  36. // 设置AudioSource组件上的音频文件为其他音频文件
  37. int i = UnityEngine.Random.Range(0, 5);
  38. audioSource.clip = musicpack[i];
  39. audioSource.Play();
  40. }
  41. }

最后,我们需要设置关键词和音乐资源,让语音识别器知道要识别哪些关键词,以及要切换哪些音乐。在Unity中,回到VoiceRecognizer游戏对象,点击KeywordRecognizer脚本组件,在Inspector窗口中,将Size属性设置为1,将Element 0属性设置为“切歌”,表示我们只要识别“切歌”这个关键词。然后,点击Music Pack属性,将Size属性设置为5,将Element 0到Element 4属性分别设置为MusicPack文件夹中的5首音乐,表示我们要切换这5首音乐。

现在,我们已经完成了所有的设置,可以测试和运行我们的项目了。点击Unity中的Play按钮,开始运行项目。此时,你应该可以听到背景音乐播放。然后,对着你的麦克风说“切歌”,你应该可以看到控制台输出识别到的信息,并且背景音乐会切换为另一首。你可以多次尝试说“切歌”,看看效果如何。

通过这篇博客,我希望你能了解如何用C#语言和Unity引擎来实现一个简单的语音识别的功能,可以通过说“切歌”来切换音乐。当然,这只是一个基础的示例,你可以根据自己的想法和需求来扩展和改进它。比如,你可以增加更多的关键词和操作,让用户可以用语音来控制更多的元素。或者,你可以优化识别的效果和准确度,让用户有更好的体验。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/118440
推荐阅读
相关标签
  

闽ICP备14008679号