Android studio调用科大讯飞的关键词提取功能

一、介绍

我是在Android studio调用科大讯飞的语音转文字功能的基础上将识别出来的文字进行了关键词提取,Android studio调用科大讯飞的语音转文字功能可以参考我的这篇博客:https://blog.csdn.net/m0_47121562/article/details/123213166
在科大讯飞中找到“关键词提取”,由于没有提供SDK,所以如果调用的话需要访问WebAPI接口,具体可以看参考文档。
在这里插入图片描述
因为尝试使用java代码访问接口没有成功,因此选择通过调用python代码访问api接口来实现,android studio通过使用chaquo调用python代码的环境配置可以参考这篇博客:https://blog.csdn.net/sjjsbsbbs/article/details/123015746?spm=1001.2014.3001.5502

二、Android studio通过访问科大讯飞的API实现关键词提取功能

python的环境配置好后,在python文件夹下新建一个python文件tiquguanjianci.py,不需要在app文件夹下面的bulid.gradle中添加需要下载的python 库,tiquguanjianci.py中的代码如下:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import time
import urllib.request
import urllib.parse
import json
import hashlib
import base64
#接口地址
url ="http://ltpapi.xfyun.cn/v1/ke"
#开放平台应用ID
x_appid = "自己的appid"
#开放平台应用接口秘钥
api_key = "自己的apikey"
#语言文本
#TEXT="汉皇重色思倾国,御宇多年求不得。杨家有女初长成,养在深闺人未识。天生丽质难自弃,一朝选在君王侧。"


def main(TEXT):
    body = urllib.parse.urlencode({'text': TEXT}).encode('utf-8')
    param = {"type": "dependent"}
    x_param = base64.b64encode(json.dumps(param).replace(' ', '').encode('utf-8'))
    x_time = str(int(time.time()))
    x_checksum = hashlib.md5(api_key.encode('utf-8') + str(x_time).encode('utf-8') + x_param).hexdigest()
    x_header = {'X-Appid': x_appid,
                'X-CurTime': x_time,
                'X-Param': x_param,
                'X-CheckSum': x_checksum}
    req = urllib.request.Request(url, body, x_header)
    result = urllib.request.urlopen(req)
    result = result.read()
    print(result.decode('utf-8'))
    return result.decode('utf-8')


if __name__ == '__main__':
    TEXT="汉皇重色思倾国,御宇多年求不得。杨家有女初长成,养在深闺人未识。天生丽质难自弃,一朝选在君王侧。"
    main(TEXT)

MainActivity.java的代码如下:

package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

import com.chaquo.python.PyObject;
import com.chaquo.python.Python;
import com.chaquo.python.android.AndroidPlatform;
import com.iflytek.cloud.RecognizerResult;
import static com.example.myapplication.XunFeiUtil.parseIatResult;
import static com.example.myapplication.XunFeiUtil.*;


public class MainActivity extends AppCompatActivity implements View.OnClickListener{
    private Button btn_click;
    private EditText mResultText;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initXunFei(this);
        btn_click = (Button) findViewById(R.id.btn_click);
        mResultText = ((EditText) findViewById(R.id.result));
        btn_click.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        startVoice(this, new XunFeiCallbackListener() {
            @Override
            public void onFinish(RecognizerResult results) {
                String text = parseIatResult(results.getResultString());
                // 获取语音转换成的文字
                mResultText.append(text);
                //调用python代码
                initPython();// 初始化Python环境
                Python py = Python.getInstance();
                PyObject pyObject=py.getModule("tiquguanjianci").callAttr("main",text);
                String returnString = pyObject.toString();
                Log.d("res:",returnString);
            }
        });
    }
    // 初始化Python环境
    public void initPython(){
        if (! Python.isStarted()) {
            Python.start(new AndroidPlatform(this));
        }
    }

}

三、结果展示

在这里插入图片描述

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值