Страница 1 из 1

Голосовое управление

СообщениеДобавлено: 20 апр 2018, 23:37
Pamir
Как в Unity реализовать голосовое управление как это сделано в игре YASUHATI? Что бы по звуку с микрофона в игре происходили события, движение или генерация объектов?

Re: Голосовое управление

СообщениеДобавлено: 21 апр 2018, 20:53
Valerich
Может что то из этого поможет выбрать:
Просмотрите, там более 10 примеров различных реализаций под различные платформы.
И потом можете нагуглить :)
http://www.leclife.com/index.php?alec=s ... y3D%20Game

Re: Голосовое управление

СообщениеДобавлено: 21 апр 2018, 21:47
waruiyume
Скрытый текст:
Не могу удержаться
https://www.youtube.com/watch?v=Emkk3IJ3_fo&t=731s

Re: Голосовое управление

СообщениеДобавлено: 21 апр 2018, 21:54
Valerich
Тоже видел подобное, там же с задержкой работает, или распознавание слов не верно, как то так и выходит)

Re: Голосовое управление

СообщениеДобавлено: 21 апр 2018, 23:23
Pamir
Спасибо посмотрю!

Valerich писал(а):Может что то из этого поможет выбрать:
Просмотрите, там более 10 примеров различных реализаций под различные платформы.
И потом можете нагуглить :)
http://www.leclife.com/index.php?alec=s ... y3D%20Game

Re: Голосовое управление

СообщениеДобавлено: 21 апр 2018, 23:27
Pamir
Забавно)), но это и так понятно, что распознавание конкретных команд сложно реализовать. Сначала бы разобраться с простыми звуковыми командами, что бы было какое то действие на любой звук в микрофон.
waruiyume писал(а):
Скрытый текст:
Не могу удержаться
https://www.youtube.com/watch?v=Emkk3IJ3_fo&t=731s

Re: Голосовое управление

СообщениеДобавлено: 23 апр 2018, 20:42
Pamir
Такой метод раочий?
Создать пустой объект, добавить к нему AudioSource и прикрепить два скрипта:

для микрофоного ввода:

using UnityEngine;
using System.Collections;

[RequireComponent(typeof(AudioSource))]
public class PureMicrophone : MonoBehaviour {
public float sensitivity = 100;
public float loudness = 0;

AudioSource src;

void Start() {
src = GetComponent<AudioSource>();
}

void Update(){
loudness = GetAveragedVolume() * sensitivity;
}

float GetAveragedVolume()
{
float[] data = new float[256];
float a = 0;
foreach(float s in data)
{
a += Mathf.Abs(s);
}
return a/256;
}
}

и второй скрипт для генерации объектов по звуку:

using System.Collections;

public class SpawnByLoudness : MonoBehaviour {

public GameObject audioInputObject;
public float threshold = 1.0f;
public GameObject objectToSpawn;
PureMicrophone micIn;
void Start() {
if (objectToSpawn == null)
Debug.LogError("You need to set a prefab to Object To Spawn -parameter in the editor!");
if (audioInputObject == null)
audioInputObject = GameObject.Find("AudioInputObject");
micIn = (PureMicrophone ) audioInputObject.GetComponent("MicrophoneInput");
}
void Update () {
float l = micIn.loudness;
if (l > threshold)
{
Vector3 scale = new Vector3(l,l,l);
GameObject newObject = (GameObject)Instantiate(objectToSpawn, this.transform.position, Quaternion.identity);
newObject.transform.localScale += scale;
}


}

}


версия юнити 5.1.2

пишет ошибку NullReferenceException: Object reference not set to an instance of an object
SpawnByLoudness.Update () (at Assets/SpawnByLoudness.cs:18)

показывает на float l = micIn.loudness; (18 строчка кода)

буду очень признателен если подскажете, как сие исправить :)

Re: Голосовое управление

СообщениеДобавлено: 24 апр 2018, 13:07
immeasurability
советую заюзать нейронку, для тренировки команд

Re: Голосовое управление

СообщениеДобавлено: 24 апр 2018, 13:20
Pamir
У меня нет определённых команд, я пытаюсь сделать так, что бы на любой звук в микрофон создавались объекты.

immeasurability писал(а):советую заюзать нейронку, для тренировки команд

Re: Голосовое управление

СообщениеДобавлено: 24 апр 2018, 18:03
Pamir
Вообще то, что здесь написано http://www.kaappine.fi/tutorials/using- ... n-unity3d/ (перевод http://www.iterekhin.ru/2014/12/unity-sound-part1.html) это рабочий вариант который можно допилить? или нужны всё таки какие то дополнительные сторонние библиотеки и т.п. и собственными возможностями Unity не обойтись?