Unity STT
NuGetForUnity
- https://github.com/GlitchEnzo/NuGetForUnity
- 우측메뉴 Release
- NuGetForUnity.4.1.0.unitypackage 다운
- Unity Project에 import
- Main Manu > NuGet > Manage NuGet Packages
- Microsoft.Extensions.DependencyInjection 설치
- Microsoft.Extensions.Http 설치
- Newtonsoft.Json 설치
OpenAI 키등록
- https://platform.openai.com/settings/organization/billing/overview
-
키 등록전 지불(Payment)방법 등록을 해야합니다. 키생성을 먼저하면 지불방법 등록후 다시 키등록 해야함
- https://platform.openai.com/api-keys
- Create new secret key
-
생성된 key는 생성시 한번만 볼 수 있습니다. 잘 보관해야합니다.
- 윈도우 > 시작메뉴 > cmd(터미널)
setx OPENAI_API_KEY 키값
환경변수로 키 등록- https://help.openai.com/en/articles/5112595-best-practices-for-api-key-safety 환경변수를 이용한 키설정 참고
echo %OPENAI_API_KEY%
등록된 키 보기
OpenAI API Dotnet
- https://github.com/OkGoDoIt/OpenAI-API-dotnet
- Download 압축 해제 후, OpenAI_API 폴더째로 드래그 드랍하여 import
AudioSource to MP3
- https://github.com/BeatUpir/Unity3D-save-audioClip-to-MP3
- ZIP 다운로드 압축 해제 내부의 unitypackage를 import
EncodeMP3.convert (AudioClip clip, string path, int BitRate);
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using OpenAI_API;
using OpenAI_API.Audio;
using System;
public class STT : MonoBehaviour
{
//OpenAIAPI.Transcriptions
private String my_api_key;
private OpenAIAPI api;
private AudioSource audioSource;
private AudioClip clip;
private string path = "file.mp3";
private void Start()
{
my_api_key = Environment.GetEnvironmentVariable("OPENAI_API_KEY", EnvironmentVariableTarget.User); //환경변수로 부터 API 키를 가져옴
api = new OpenAIAPI(my_api_key); //API 키를 이용하여 API 객체 생성
//transcriptions.GetTextAsync("path/to/file.mp3");
//get microphone name
foreach (string device in Microphone.devices)
{
Debug.Log("Device Name: " + device);
}
//get audio source reference
AudioSource audioSource = GetComponent<AudioSource>();
}
private void Update(){
//push q key for start recording
if(Input.GetKeyDown(KeyCode.Q)){
clip = Microphone.Start(Microphone.devices[0], true, 10, 44100);
}
//push w key for stop recording
if(Input.GetKeyDown(KeyCode.W)){
Microphone.End(Microphone.devices[0]);
}
//push space key for get text
if(Input.GetKeyDown(KeyCode.Space)){
EncodeMP3.convert (clip, path, 44100);
GetTextAsync(path);
}
}
async void GetTextAsync(string path)
{
string text = await api.Transcriptions.GetTextAsync(path);
Debug.Log(text);
}
}