Android App开发在线语音识别处理中实现中文转拼音(Pinyin4j库)功能(超详细 附源码和演示)

需要源码请点赞关注收藏后评论区留下QQ~~~

一、中文转拼音

如果想对一串数字排序,可以比较它们的数值大小,若想对英文单词排序,可以比较它们首字母的ASCII码大小,在中文文化圈中通常有下列的排序方式

1:根据词语首个文字的笔画多少排序,比如对一群人名排序,通常按照姓氏笔画的数量从少到多

2:根据词语首个文字的拼音先后排序 把词语的第一个文字的拼音列出来,再按照拼音字母从A到Z排列,比如新华字典对收录汉字的排列

关于以上两种排列方式,在中文互联网的长期实践中更常见的是第二种依据首字拼音排序

但是计算机只知道每个中文字符的ASCII码大小,并不知晓每个中文字符的拼音是什么,为了解决从中文到拼音的转换问题,开源库Pinyin4j横空出世,它支持把一段中文转为对应的拼音字母,从而将中文的比较规则变成对拉丁字母的排序

由于Pinyin4j是第三方开源库 所以用之前要修改build.gradle 添加下列一行配置

implementation 'com.belerweb:pinyin4j:2.5.1'

接着在代码中调用转换工具PinyinHelper的toHanyuPinyinStringArray方法  即可把中文字符转换成拼音字符 因为中文普通话拥有五种声调 所以转换时还可以选择是否保留声调数字 中文声调与数字的对应关系如下

第一声 1

第二声 2

第三声 3

第四声 4

第五声 5

效果如下

Android App开发在线语音识别处理中实现中文转拼音(Pinyin4j库)功能(超详细 附源码和演示)_第1张图片

点击按钮即可自动保存声调数字 

 Android App开发在线语音识别处理中实现中文转拼音(Pinyin4j库)功能(超详细 附源码和演示)_第2张图片

 Android App开发在线语音识别处理中实现中文转拼音(Pinyin4j库)功能(超详细 附源码和演示)_第3张图片

 代码如下

Java类

package com.example.voice;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.text.TextUtils;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import com.example.voice.util.PinyinUtil;

public class PinyinActivity extends AppCompatActivity {
    private final static String TAG = "PinyinActivity";
    private EditText et_hanzi; // 声明一个编辑框对象
    private CheckBox ck_tone; // 声明一个复选框对象
    private TextView tv_pinyin; // 声明一个文本视图对象

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_pinyin);
        et_hanzi = findViewById(R.id.et_hanzi);
        ck_tone = findViewById(R.id.ck_tone);
        tv_pinyin = findViewById(R.id.tv_pinyin);
        findViewById(R.id.btn_convert).setOnClickListener(v -> showPinyin());
        ck_tone.setOnCheckedChangeListener((buttonView, isChecked) -> showPinyin());
    }

    // 显示转换后的汉字拼音
    private void showPinyin() {
        String hanzi = et_hanzi.getText().toString();
        if (TextUtils.isEmpty(hanzi)) {
            Toast.makeText(this, "请先输入待转换的汉字", Toast.LENGTH_SHORT).show();
            return;
        }
        // 把汉字串转为拼音串
        String pinyin = PinyinUtil.getHanziPinYin(hanzi, ck_tone.isChecked());
        tv_pinyin.setText(pinyin);
    }
}

XML文件



    

    

创作不易 觉得有帮助请点赞关注收藏~~~

你可能感兴趣的:(Android,App,android,android,studio,ide,语音识别,java)