1
2
3
4
5
repositories {
maven {
url "https://nexus.nugu.co.kr/repository/maven-public/"
}
}
Android 4.4(API level 19)에서도 동작하지만, TLS v1.2로 설정이 필요합니다.
Android 4.4(API level 19)에서도 동작하지만, TLS v1.2로 설정이 필요합니다.
프로젝트의 build.gradle에 레포지토리를 추가합니다.
1
2
3
4
5
repositories {
maven {
url "https://nexus.nugu.co.kr/repository/maven-public/"
}
}
어플리케이션 모듈의 build.gradle에, 전체 라이브러리를 사용하기 위해 아래 의존성을 추가합니다.
(전체 라이브러리에 대한 의존성은 여기를 참조)
1
2
3
4
5
6
7
8
dependencies {
// Nugu Android Helper
implementation "com.skt.nugu.sdk:nugu-android-helper:${latestVersion}"
// Nugu Android UX Kit
implementation "com.skt.nugu.sdk:nugu-ux-kit:${latestVersion}"
// Nugu Android Login Kit
implementation "com.skt.nugu.sdk:nugu-login-kit:${latestVersion}"
}
NUGU PoC를 생성하기 위해서는 NUGU Developers를 통해 제휴가 필요합니다.
더 자세한 내용은 NUGU SDK 소개에서 확인이 가능합니다.
발급받은 PoC 정보를 확인하기 위해서 NUGU SDK PoC목록으로 이동해서 Client ID, Client Secret, Redirect URI 정보를 확인하세요.
NUGU SDK를 사용하는 앱 간에 URL Scheme 충돌을 방지하기 위해,
Redirect URI는 nugu.user.{client-id}://auth
로 설정하는 것을 권고합니다.
strings.xml 파일에 nugu_redirect_scheme, nugu_redirect_host를 추가합니다. 예를들어 redirectUri가 “example://sample” 라면 아래와 같이 추가합니다.
1
2
<string name="nugu_redirect_scheme">example</string>
<string name="nugu_redirect_host">sample</string>
NUGU SDK PoC목록에서 음성인식 모델 파일을 다운로드 받습니다.
음성인식 파일 리소스에 대해서 압축되지 않도록 build.gradle 설정이 필요합니다.
1
2
3
4
5
6
android {
...
aaptOptions {
noCompress "raw"
}
}
NUGU SDK PoC목록에서 nugu-config.json 파일을 다운로드 받습니다.
다운로드 받은 파일을 Asset 폴더에 파일을 복사하고, ConfigurationStore을 초기화합니다.
1
2
ConfigurationStore.configure(context = context,
filename = "nugu-config.json")
AndroidManifest.xml에 아래 필수 권한을 추가합니다.
1
2
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.INTERNET"/>
Manifest에 추가한 android.permission.RECORD_AUDIO 권한은 런타임에 추가로 요청하여 획득해야 합니다.
NUGU 로그인은 NUGU 회원 연동 방식과 NUGU 회원 미사용 방식 두 가지로 제공됩니다.
NUGU 서비스를 이용하기 위해서는 OAuth 2.0 인증이 필요합니다.
OAuth 2.0 API 는 Authentication 에서 확인이 가능합니다.
NUGU 회원 연동 방식을 사용하기 위해서는 T아이디 연동이 필요합니다.
기기별 고유식별자(deviceUniqueId
)를 변경 가능합니다. (이미 NuguOAuth.create 에서 설정 되어있다면 생략)
1
2
3
4
val newOptions = NuguOAuthOptions.Builder()
.deviceUniqueId("{your-device-uniqueId}")
.build()
NuguOAuth.getClient().setOptions(newOptions)
loginWithTid()
를 호출 후에 NuguOAuthInterface.OnLoginListener
를 통해 인증 결과를 받습니다.
1
2
3
4
5
6
7
8
9
authClient.loginWithTid( activity = this, listener = object : NuguOAuthInterface.OnLoginListener {
override fun onSuccess(credentials: Credentials) {
// Save Credentials
}
override fun onError(error: NuguOAuthError) {
// Called when the request failed.
}
})
발급 받은 refresh-token이 이미 있다면, 이 후에는 인 앱 브라우저 없이 로그인 정보를 갱신할 수 있습니다.
1
2
3
4
5
6
7
8
9
authClient.loginSilentlyWithTid("{refresh-token}", object : NuguOAuthInterface.OnLoginListener {
override fun onSuccess(credentials: Credentials) {
// Save Credentials
}
override fun onError(error: NuguOAuthError) {
// Called when the request failed.
}
})
기기별 고유식별자(deviceUniqueId
)를 변경 가능합니다. (이미 NuguOAuth.create 에서 설정 되어있다면 생략)
1
2
3
4
val newOptions = NuguOAuthOptions.Builder()
.deviceUniqueId("{your-device-uniqueId}")
.build()
NuguOAuth.getClient().setOptions(newOptions)
loginAnonymously()
를 호출 후에 NuguOAuthInterface.OnLoginListener
를 통해 인증 결과를 받습니다.
1
2
3
4
5
6
7
8
9
authClient.loginAnonymously(object : NuguOAuthInterface.OnLoginListener {
override fun onSuccess(credentials: Credentials) {
// Save credentials
}
override fun onError(error: NuguOAuthError) {
// Called when the request failed.
}
})
로그인 후, 우리는 NUGU의 모든 기능을 사용할 수 있습니다. 여기서는 NUGU의 모든 기능을 손쉽게 이용할 수 있도록 SDK에서 제공하는 NuguAndroidClient
클래스를 이용하여 음성인식을 시작하는 간단한 방법을 소개합니다.
AuthDelegate
를 정의합니다.
1
2
3
4
5
6
7
// Parameter로 OAuth 옵션을 설정해야 합니다.
// 설정된 옵션은 이후 NuguOAuth.setOptions을 사용하여 변경 가능합니다.
val authDelegate = NuguOAuth.create(
options = NuguOAuthOptions.Builder()
.deviceUniqueId(deviceUniqueId(context))
.build()
)
AudioProvider
를 생성합니다.
1
2
3
// AudioSourceManager : AudioProvider에 대한 기본 구현 클래스
// AudioRecordSourceFactory : Android의 AudioRecord를 소스로 사용하는 SDK에서 제공
val audioProvider = AudioSourceManager(AudioRecordSourceFactory())
EndPointDetector
를 생성합니다. 위에서 받은 모델 파일의 경로를 인자로 넣어줍니다.
1
val endPointDetector = EndPointDetector(EPD_MODEL_FILE_PATH)
NuguAndroidClient
를 생성하고, 음성인식을 시작합니다. 음성인식에 대한 결과는 각각의 리스너를 통해 받을 수 있습니다.
1
2
3
4
5
6
7
8
9
10
11
val client = NuguAndroidClient.Builder(
context, // Android Context
authDelegate,
audioProvider
).endPointDetector(endPointDetector).build()
client.asrAgent?.addOnResultListener(...)
client.asrAgent?.addOnStateChangeListener(...)
// 음성인식 시작
client.asrAgent?.startRecognition(initiator = ASRAgentInterface.Initiator.TAP)
아래 Github 주소를 통해 NUGU SDK for Android 소스 코드를 다운로드 받을 수 있습니다.