Esempio n. 1
0
    /// <summary>
    /// 録音を停止する
    /// </summary>
    public void EndRecording()
    {
        if (!Microphone.IsRecording(deviceName: micName))
        {
            Debug.Log("録音が開始されていません");
            return;
        }

        Debug.Log("録音を停止します");

        // マイクの録音位置を取得
        int position = Microphone.GetPosition(micName);

        // 録音を停止
        Microphone.End(deviceName: micName);
        RecordingStartButtonScript.recordedFlg = true;

        // 音声データ一時退避用の領域を確保し、audioClipからのデータを格納
        float[] soundData = new float[audioSource.clip.samples * audioSource.clip.channels];
        audioSource.clip.GetData(soundData, 0);

        // 新しい音声データ領域を確保し、positonの分だけ格納できるサイズにする。
        float[] newData = new float[position * audioSource.clip.channels];

        // positionの分だけデータをコピー
        for (int i = 0; i < newData.Length; i++)
        {
            newData[i] = soundData[i];
        }

        // 新しいAudioClipのインスタンスを生成し、音声データをセット
        AudioClip newClip = AudioClip.Create(audioSource.clip.name, position, audioSource.clip.channels, audioSource.clip.frequency, false);

        newClip.SetData(newData, 0);
        AudioClip.Destroy(audioSource.clip);
        audioSource.clip = newClip;

        // Wavファイルへ保存
        DateTime dt           = DateTime.Now;
        string   dtStr        = dt.ToString("yyyyMMddHHmmss");
        string   fileFullPath = Path.Combine(Application.persistentDataPath, "audiofile_" + dtStr + ".wav");

        if (!SaveAudioSourceWav.Save(fileFullPath, audioSource.clip))
        {
            Debug.Log("録音ファイルを保存することができませんでした");
        }
    }
Esempio n. 2
0
    void Update()
    {
        // AudioClip存在 and 録音未完 and マイク録音中じゃない → 自動終了している
        if (audioSource.clip != null && !recordedFlg && !Microphone.IsRecording(deviceName: micName))
        {
            Debug.Log("録音自動終了!");
            recordedFlg = true;

            // Wavファイルへ保存
            // ※こちらにアラート表示の処理を入れて頂くのもよし
            DateTime dt           = DateTime.Now;
            string   dtStr        = dt.ToString("yyyyMMddHHmmss");
            string   fileFullPath = Path.Combine(Application.persistentDataPath, "audiofile_" + dtStr + ".wav");
            if (!SaveAudioSourceWav.Save(fileFullPath, audioSource.clip))
            {
                Debug.Log("録音ファイルを保存することができませんでした");
            }
        }
    }