Unity/Csharp/音/変換
音からバイトへ変換
using UnityEngine; using UnityEngine.UI; public class SampleScene : MonoBehaviour { [SerializeField] readonly AudioSource audioSource; [SerializeField] readonly Button button; // Start is called before the first frame update void Start() { button.onClick.AddListener(ConvertAudio); } void ConvertAudio() { // audioSource.Play(); float[] fs = GetFloatByClip(audioSource.clip); byte[] bytes = ToByteArray(fs); foreach (byte b in bytes) { Debug.Log("b=" + b); } float[] floats = ToFloatArray(bytes); AudioClip audioClip = AudioClip.Create("NewSound", floats.Length, 1, 44100, false); audioClip.SetData(floats, 0); audioSource.clip = audioClip; audioSource.Play(); } float[] GetFloatByClip(AudioClip clip) { float[] floatData = new float[clip.samples * clip.channels]; clip.GetData(floatData, 0); return floatData; } // floatsからbytesへ byte[] ToByteArray(float[] floatArray) { int len = floatArray.Length * 4; byte[] byteArray = new byte[len]; int pos = 0; foreach (float f in floatArray) { byte[] data = System.BitConverter.GetBytes(f); System.Array.Copy(data, 0, byteArray, pos, 4); pos += 4; } return byteArray; } // bytesからfloatsへ float[] ToFloatArray(byte[] byteArray) { int len = byteArray.Length / 4; float[] floatArray = new float[len]; for (int i = 0; i < byteArray.Length; i += 4) { floatArray[i / 4] = System.BitConverter.ToSingle(byteArray, i); } return floatArray; } }
参考
音からバイト、バイトから音 https://www.coder.work/article/2877137
C# (CSharp) UnityEngine AudioClip.GetData Examples https://csharp.hotexamples.com/examples/UnityEngine/AudioClip/GetData/php-audioclip-getdata-method-examples.html
Byte[] to AudioClip https://forum.unity.com/threads/byte-to-audioclip.911723/
WAV byte[] to AudioClip? https://answers.unity.com/questions/737002/wav-byte-to-audioclip.html
How to convert Unity AudioClip into byte array suitable for Firebase Storage upload https://stackoverflow.com/questions/55940014/how-to-convert-unity-audioclip-into-byte-array-suitable-for-firebase-storage-upl
How do i play mp3 files in Unity Standalone? https://gamedev.stackexchange.com/questions/114885/how-do-i-play-mp3-files-in-unity-standalone
create AudioClip from byte[] https://stackoverflow.com/questions/16078254/create-audioclip-from-byte