原生和H5调用百度语音转写

本文介绍了如何通过百度AI的语音识别服务将语音转换为文字,涉及步骤包括在百度AI开放平台创建应用获取API密钥,以及使用JavaSDK提供的方法处理音频文件,提供了两种不同的接口调用方式:对接原生接口和对接H5接口。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

随着互联网的高速发展,越来越多的需求需要把语音转换为文字(不是实时)

1、实现思路:

     前端发给后端一个war文件,后端接收保存到本地,然后解析本地文件,获取语音内容返回文字信息。

前期准备:

  1、 访问百度ai官网:百度AI开放平台-全球领先的人工智能服务平台

  2、登录成功,选择产品,找到人工智能模块里的语音技术,如图:

  

2、按照操作指引完成1、 免费尝鲜,2、创建应用,3、调用服务,4、查看用量

 

 1、免费尝鲜:

   选择语音识别全选,免费领取:

 2、创建应用

    应用名称,选择接口技术、语音包名选择不需要会生成一条记录,里面包含

APP_ID,API_KEY,SECRET_KEY这是我们要进行百度转写的是要用的

 

 准备工作已经完成,开始上干货

2、上代码:

  引入依赖:

   <dependency>
            <groupId>com.baidu.aip</groupId>
            <artifactId>java-sdk</artifactId>
            <version>4.1.1</version>
        </dependency>

从百度 

 方法一:(对接原生接口):

//语言转写  调用百度api
//上传wav包,转换为文件上传,调用白度接口,进行解析,返回一个对象,对象打点调result这个属性,然后返回前端。
@PostMapping(value = "/phoneticTranscription", produces = "text/html;charset=utf-8")
public String getphoneticTranscription(HttpServletRequest request,
                    @RequestParam("file") MultipartFile file) throws Exception {
    if (!file.isEmpty()) {
        // 构建上传文件的存放路径
        String path = request.getServletContext().getRealPath("/upload/");
        System.out.println("path = " + path);

        // 获取上传的文件名称,并结合存放路径,构建新的文件名称
        String filename = file.getOriginalFilename();
        File filepath = new File(path, filename);

        // 判断路径是否存在,不存在则新创建一个
        if (!filepath.getParentFile().exists()) {
            filepath.getParentFile().mkdirs();
        }

        String filePath = path + File.separator + filename;
        // 将上传文件保存到目标文件目录
        file.transferTo(new File(filePath));
        //解析上传文件,返回数据给前端。
        AipSpeech client = new AipSpeech(APP_ID, API_KEY, SECRET_KEY);
        client.setConnectionTimeoutInMillis(2000);
        JSONObject res = client.asr(filePath, "wav", 16000, null);
        System.out.println(res);
        return res.getJSONArray("result").join(",");
    }


    return null;
}

方法二:(对接H5接口)

//语言转写  调用百度api
//按照道理来说,应该
@PostMapping(value = "/phoneticTranscription", produces = "text/html;charset=utf-8")
public String getyy(HttpServletRequest request,
                    @RequestParam("file") MultipartFile file) throws Exception {
    byte[] pcmByteData = mp3Convert2pcm(file.getInputStream());
    if (!file.isEmpty()) {
        // 将上传文件保存到目标文件目录
        AipSpeech client = new AipSpeech(APP_ID, API_KEY, SECRET_KEY);
        client.setConnectionTimeoutInMillis(2000);
        org.json.JSONObject mav = client.asr(pcmByteData, "pcm", 16000, null);
        System.out.println(mav);
        return mav.getJSONArray("result").join(",");
    }
    return null;
}

/**
 * MP3转换PCM
 *
 * @param inputStream MP3输入流
 * @throws Exception
 */
public static byte[] mp3Convert2pcm(InputStream inputStream) throws Exception {
    //转换PCM audioInputStream 数据
    AudioInputStream audioInputStream = getPcmAudioInputStream(inputStream);
    byte[] pcmBytes = IOUtils.toByteArray(audioInputStream);
    return pcmBytes;
}

/**
 * 获取PCM AudioInputStream 数据
 *
 * @param inputStream MP3输入流
 * @return AudioInputStream PCM输入流
 */
private static AudioInputStream getPcmAudioInputStream(InputStream inputStream) {
    AudioInputStream audioInputStream = null;
    AudioFormat targetFormat = null;
    try {
        AudioInputStream in = null;
        MpegAudioFileReader mp = new MpegAudioFileReader();
        in = mp.getAudioInputStream(inputStream);
        AudioFormat baseFormat = in.getFormat();
        targetFormat = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED, baseFormat.getSampleRate(), 16,
                baseFormat.getChannels(), baseFormat.getChannels() * 2, baseFormat.getSampleRate(), false);
        audioInputStream = AudioSystem.getAudioInputStream(targetFormat, in);
    } catch (Exception e) {
        e.printStackTrace();
    }
    return audioInputStream;
}
在Python中利用百度语音API(通常指Baidu Speech API,如`baidu-aip-sdk`)实现实时语音文字功能,你需要按照以下步骤操作: 1. 首先,注册并获取百度云账户,然后在控制台创建一个语音识别项目,并获取到对应的App ID、密钥加密Key。 2. 安装官方提供的SDK库,例如`pip install baidu-aip`, 这将安装`aip-client-python`。 3. 导入必要的模块: ```python from aip import AipSpeech ``` 4. 初始化AIP服务: ```python client = AipSpeech('your_app_id', 'your_api_key', 'your_secret_key') ``` 注意替换`your_app_id`、`your_api_key``your_secret_key`为你实际的API信息。 5. 创建一个实时识别函数,比如使用`streamingRecognize`方法: ```python def speech_to_text(audio_stream): options = { 'dev_pid': 1537, # 设备ID,一般保持默认即可 'cuid': 'unique_cuid', # 用户唯一标识,可以自定义 'format': 'wav', # 输出音频格式,这里设置为wav格式 'rate': 16000, # 采样率,常见的是16000 Hz } try: result = client.streamingRecognize(audio_stream, options) return result['result'][0] except Exception as e: print(f"Error occurred: {e}") ``` 这里的`audio_stream`应该是一个能够读取数据的文件流或网络连接。 6. 调用这个函数并将音频输入给它,比如从麦克风录音或读取文件内容: ```python # 使用例:假设你有一个音频文件名为'my_audio.wav' with open('my_audio.wav', 'rb') as audio_file: audio_data = audio_file.read() transcribed_text = speech_to_text(audio_data) print(f"Transcribed text: {transcribed_text}") ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值