Giới thiệu
Pronunciation module is an Fcloud service developed by Ftech. The module allows checking English pronunciation and evaluating pronunciation and average score of the whole sentence. To integrate and use this service, you must use Fcloud's SDK. And here are instructions for integrating the SDK.
Xác thực
To authorize, use this code: ```
Fcloud(function () {
this.init('ClientID', 'SecretKey')
.then((data) => {
//init success
})
.catch((error) => {
//init fail
})
})
Bạn chắc chắn rằng mình đã thay thế
ClientID
vàSecretKey
mà Fcloud cung cấp trên trang (https://fcloud-partner-cms.ftech.ai).
Để gọi được các API chúng ta sẽ phải init SDK tham số truyền vào là ClientID và SecretKey được lấy khi bạn tạo Application trên CMS dành cho đối tác theo hướng dẫn sau:
- Đăng nhập CMS Partner với username/password được cung cấp (https://fcloud-partner-cms.ftech.ai)
- Mua gói dịch vụ
- Tạo App
Server Integrator
Sau khi tích hợp SDK, service Fcloud hỗ trợ callback server-server giúp hỗ trợ việc lấy thông tin request nhanh và chính xác nhất.
Web SDK
Get Phoneme
Fcloud(function() {
this.getPhoneme('How are you', (response) => {
// Xử lý nghiệp vụ sử dụng thông tin phoneme
})
});
Đoạn code trên sẽ trả ra cấu trúc json có dạng như sau:
{
"cleaned_reference_text": "how are you",
"target_phoneme_word": "haʊ ɑː juː",
"target_phoneme_char": "['h aʊ'] ['ɑː', 'ə r'] ['j uː', 'j ə', 'j ʊ']",
"target_phoneme_list": [
[
[
"h",
"aʊ"
]
],
[
[
"ɑː"
],
[
"ə",
"r"
]
],
[
[
"j",
"uː"
],
[
"j",
"ə"
],
[
"j",
"ʊ"
]
]
],
"syllable_info": [
1,
1,
1
],
"request_id": "47671c30-2159-45e3-bae2-d094fd937b32"
}
Chúng tôi cung cấp API cho phép lấy thông tin phát âm. Để sử dụng các bạn gọi hàm sau:
HTTP Request
PÓST https://fcloud-streaming-socket-api.ftech.ai/ioe/phoneme
Body Request
Parameter | Description |
---|---|
reference_text | Chuỗi mà bạn mong muốn lấy phiên âm |
english_accent | Mã định danh ngôn ngữ |
extra_data | Một số các thông tin kèm theo. Fcloud sẽ trả về chuỗi này khi callback kết quả |
Start Recording
Chúng tôi cung cấp API cho phép Start Recording. Để sử dụng các bạn gọi hàm sau:
Fcloud(function() {
this.startRecord(curText, extra_data, (data) => {
//Callback trả về kết quả sau khi sau khi stop recording
});
});
Đoạn code trên sẽ trả ra cấu trúc json có dạng như sau:
{
"code": 0, /*Mã lõi 0: Thành công; 1: Thất bại*/
"data": {
"request_id": "367ce6ed-08ca-4106-91e0-4934ea7b2bd8"
}
}
HTTP Request
POST https://fcloud-streaming-socket-api.dev.ftech.ai/ioe/start_stream_v2
Body Request
Parameter | Description |
---|---|
reference_text | Chuỗi mà bạn mong muốn lấy phiên âm |
english_accent | Mã định danh ngôn ngữ |
extra_data | Một số các thông tin kèm theo. Fcloud sẽ trả về chuỗi này khi callback kết quả |
Stop Recording
Khi stop recording bắt đầu tính toán và trả về kết quả phát âm theo callback của hàm start recording ```
Fcloud(function () {
this.stopRecord()
})
Code trên sẽ trả ra cấu trúc json có dạng như sau:
{
"code": 0,
"data": {
"request_id": "5d2400e5-b039-4219-b2af-f5ae733ce294",
"score_data": {
"accuracy_score": 22,
"processing_time": 0.025,
"words_per_min": 0,
"fluency_score": "",
"speaking_duration": 0,
"user_phoneme": "əʊ",
"words_score_detail": [
{
"word": "hello",
"phoneme_word": "heləʊ",
"accuracy_score": 22,
"phonemes_score_detail": [
{
"phoneme": "h",
"accuracy_score": 0,
"audio_link": "https://minio.ftech.ai/fcloud/phoneme_tips/39.wav",
"description": "<ul><li>nâng ngạc mềm lên cao</li><li>đẩy luồng khí thoát ra</li><li>dây thanh quản trong cổ họng không rung khi phát âm</li></ul>"
},
{
"phoneme": "e",
"accuracy_score": 0,
"audio_link": "https://minio.ftech.ai/fcloud/phoneme_tips/6.wav",
"description": "<ul><li>hạ thấp lưỡi một chút</li><li>miệng mở rộng sang hai bên</li><li>phát âm ngắn</li></ul>"
},
{
"phoneme": "l",
"accuracy_score": 0,
"audio_link": "https://minio.ftech.ai/fcloud/phoneme_tips/40.wav",
"description": "<ul><li>đặt mặt lưỡi chạm phần lợi ngay sau răng cửa hàm trên, chặn luồng khí trong miệng</li><li>đẩy luồng khí thoát ra ngoài qua hai bên của lưỡi</li><li>dây thanh quản trong cổ họng rung khi phát âm</li></ul>"
},
{
"phoneme": "əʊ",
"accuracy_score": 88,
"audio_link": "https://minio.ftech.ai/fcloud/phoneme_tips/12.wav",
"description": "<ul><li>bắt đầu với vị trí âm <b>/ə/</b> rồi nhanh chóng sang âm <b>/ʊ/</b></li><li>lưỡi nâng lên và lùi về phía sau</li><li>chuyển môi từ hơi mở sang hơi tròn</li><li>phần âm <b>/ə/</b> được phát âm dài và to hơn so với phần âm <b>/ʊ/</b></li></ul>"
}
]
}
],
"phoneme_score_statistics": [
{
"group_name": [
"/s/, /z/, /ʃ/"
],
"phones": [
"s",
"z",
"ʃ"
],
"score": [],
"mean_score": "None"
},
{
"group_name": [
"/p/, /t/, /k/"
],
"phones": [
"p",
"t",
"k"
],
"score": [],
"mean_score": "None"
},
{
"group_name": [
"/i/, /ɪ/"
],
"phones": [
"i",
"ɪ"
],
"score": [],
"mean_score": "None"
},
{
"group_name": [
"/æ/, /ʌ/, /ɑ/"
],
"phones": [
"æ",
"ʌ",
"ɑ"
],
"score": [],
"mean_score": "None"
},
{
"group_name": [
"/l/, /r/"
],
"phones": [
"l",
"r"
],
"score": [
0
],
"mean_score": 0.0
},
{
"group_name": [
"Schwa: /ə/"
],
"phones": [
"ə"
],
"score": [],
"mean_score": "None"
},
{
"group_name": [
"/eɪ/, /ɛ/, /æ/"
],
"phones": [
"eɪ",
"ɛ",
"æ"
],
"score": [],
"mean_score": "None"
},
{
"group_name": [
"/ʃ/, /ʒ/, /tʃ/, /dʒ/"
],
"phones": [
"ʃ",
"ʒ",
"tʃ",
"dʒ"
],
"score": [],
"mean_score": "None"
},
{
"group_name": [
"/h/, /f/, /v/"
],
"phones": [
"h",
"f",
"v"
],
"score": [
0
],
"mean_score": 0.0
},
{
"group_name": [
"Nasals: /m/, /n/, /ɳ/"
],
"phones": [
"m",
"ɳ",
"n"
],
"score": [],
"mean_score": "None"
},
{
"group_name": [
"R sounds"
],
"phones": [
"ɹ"
],
"score": [],
"mean_score": "None"
},
{
"group_name": [
"/j/, /ʒ/, /dʒ/"
],
"phones": [
"j",
"ʒ",
"dʒ"
],
"score": [],
"mean_score": "None"
},
{
"group_name": [
"Dipthongs"
],
"phones": [
"aɪ",
"eɪ",
"əʊ",
"aʊ",
"eə",
"iə",
"ɔɪ",
"ʊə",
"oʊ"
],
"score": [
88
],
"mean_score": 88.0
},
{
"group_name": [
"/w/, /v/, /b/"
],
"phones": [
"w",
"v",
"b"
],
"score": [],
"mean_score": "None"
},
{
"group_name": [
"TH sounds: /θ/, /ð/"
],
"phones": [
"θ",
"ð"
],
"score": [],
"mean_score": "None"
}
],
"request_id": "5d2400e5-b039-4219-b2af-f5ae733ce294",
"kenlm_log": {
"request_id": "5d2400e5-b039-4219-b2af-f5ae733ce294",
"reference_text": "hello",
"user_phoneme": "əʊ",
"accuracy_score": 22,
"latency": 0.025
}
},
"minio_link": "https://minio.dev.ftech.ai/platform/ioe/5d2400e5-b039-4219-b2af-f5ae733ce294.wav",
"audio_duration": 1
}
HTTP Request
POST https://fcloud-streaming-socket-api.dev.ftech.ai/ioe/stop_stream
Parameter Request
Parameter | Description |
---|---|
request_id | Request_ID được trả về từ bước start recording |
Body Request
Parameter | Description |
---|---|
form-data | File audio mà người dùng ghi âm |
Android SDK
Install SDK Android
Setup gradle maven
- Với Gradle v1.x - v5.x
Mở thư mục
build.grade
và thêm
allprojects {
repositories {
google()
mavenCentral()
maven { url 'https://jitpack.io' } <- thêm dòng này
}
}
- Với Gradle v6.x+
Mở thư mục
build.grade
và thêm
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS)
repositories {
google()
mavenCentral()
maven { url 'https://jitpack.io' } <- thêm dòng này
}
}
Open file app/build.grade then add
dependencies {
...
implementation "com.github.ftechmobile:ioe-sdk-android:1.0.7"
}
Init in file Application
override fun onCreate() {
super.onCreate()
...
FTechIOEManager.init(this)
}
SDK Android Integration
Init
Tham số | Kiểu | Mô tả |
---|---|---|
appId | String | Application id |
secretKey | String | IOE secret key |
- Sau khi khởi tạo thành công SDK sẽ trả lại kết quả ở
onSuccess()
callback - Khi khởi tạo thất bại SDK sẽ callback
onFail()
.
FTechIOEManager.initRecord(appId, secretKey, new IFTechIOECallback<Boolean>() {
@Override
public void onSuccess(Boolean info) {
}
@Override
public void onFail(APIException error) {
}
@Override
public void onCancel() {
}
});
Register callback
Sau khi đăng kí, SDK sẽ trả lại trạng thái tương ứng trong callback
Trạng thái | Mô tả |
---|---|
initRecord | Triệu gọi khi khởi tạo thành công |
onStart | Triệu gọi khi bắt đầu ghi âm thành công |
onRecording | Triệu gọi khi trong tiến trình ghi âm |
onFail | Triệu gọi khi có lỗi xảy ra trong quá trình ghi âm |
onComplete | Triệu gọi khi ghi âm thành công và trả lại kết quả |
FTechIOEManager.registerRecordingListener(new IFTechRecordingCallback() {
@Override
public void onStart() {
}
@Override
public void onRecording() {
}
@Override
public void onFail(@NonNull APIException error) {
}
@Override
public void onComplete(@NonNull StopRecordIOEResponse result) {
}
});
SDK Android Feature
Start record
Tham số | Kiểu | Mô tả |
---|---|---|
referenceText | String | Văn bản cần phát âm |
languageAccent | LanguageAccent | Ngôn ngữ phát âm (Tùy chọn - Giọng Anh mặc định) |
extraData | String | Dữ liệu kèm theo (Tùy chọn) |
- Sử dụng để bắt đầu quá trình đánh giá phát âm
- Sau khi bắt đầu thành công, SDK sẽ vào trạng thái đăng ghi âm,
onStart()
sẽ được gọi - Khi bắt đầu thất bại sẽ callback
onFail()
FTechIOEManager.startRecord(referText, accent, extraData);
Stop record
- Sử dụng để kết thúc quá trình đánh giá phát âm
- Khi đánh giá thành công, SDK sẽ trả lại kết quả đánh giá ở
onComplete()
trong callback - Khi dừng ghi âm và đánh giá thất bại, SDK sẽ callback
onFail()
FTechIOEManager.stopRecord();
IOS SDK
Install SDK IOS
Dowload SDK
Bạn tải xuống tại đây
Add existing frameworks
- Trong project navigator, chọn project của bạn.
- Chọn
your target
- Chọn tab
Build Phases
- Mở phần mở rộng
Link Binaries With Libraries
- Bấm vào nút
+
- Bấm vào
Add Other...
- Chọn framework
FSound.xcframework
SDK IOS Integration
Init
Tham số | Kiểu | Mô tả |
---|---|---|
appId | String | Application id |
secretKey | String | IOE secret key |
FTechIOEManager.instance().initRecord(appId: "", key: "")
Register callback
Sau khi đăng kí, SDK sẽ trả lại trạng thái tương ứng trong callback
Trạng thái | Mô tả |
---|---|
initRecord | Triệu gọi khi khởi tạo thành công |
onStart | Triệu gọi khi bắt đầu ghi âm thành công |
onRecording | Triệu gọi khi trong tiến trình ghi âm |
onFail | Triệu gọi khi có lỗi xảy ra trong quá trình ghi âm |
onComplete | Triệu gọi khi ghi âm thành công và trả lại kết quả |
- Implement `FTechIOEManagerDelegate
func initRecord(success: Bool) {
}
func onStart() {
}
func onRecording() {
}
func onFailure(error: FSoundError) {
}
func onCompletionRecord(data: StopRecordIOEResponse) {
}
SDK IOS Feature
Start record
Tham số | Kiểu | Mô tả |
---|---|---|
referenceText | String | Văn bản cần phát âm |
languageAccent | LanguageAccent | Ngôn ngữ phát âm (Tùy chọn - Giọng Anh mặc định) |
extraData | String | Dữ liệu kèm theo (Tùy chọn) |
- Sử dụng để bắt đầu quá trình đánh giá phát âm
- Khi bắt đầu ghi âm thất bại sẽ callback
onFail()
FTechIOEManager.instance().startRecord(referenceText: "")
Stop record
- Sử dụng để kết thúc quá trình đánh giá phát âm
- Khi đánh giá thành công, SDK sẽ trả lại kết quả đánh giá ở
onComplete()
trong callback - Khi dừng ghi âm và đánh giá thất bại, SDK sẽ callback
onFail()
FTechIOEManager.instance().stopRecord()