Android快速集成微软语音服务(Azure认知服务)

这篇具有很好参考价值的文章主要介绍了Android快速集成微软语音服务(Azure认知服务)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在网上溜了一圈,发现使用微软语音服务(Azure)的文章好少,为之感叹,在国内,百度语音、讯飞语音算是前沿语音技术,使用的公司和人自然不少,不过,在国际语言,小语种这块,还需要努力。刚开始,我也想使用百度语音翻译来着,后面发现集成好麻烦,API请求参数看懵逼了,不要友好,讯飞语音也想要集成了,看了一些demo,仔看看价格,和百度差不多,一直没动手集成,直到后面看到网上说白嫖微软语音合成文章后,大为受惊,操作一番,确实可以哈!一只白嫖一时爽,连续白嫖两周后,啊哈!网站上直接没有体验的入口了,就在不久前,也就是3月16号,俺一看,傻眼了,没了。
好吧!使用两周,感觉语音合成听着挺逼真的,那就注册一个账号,搞起来吧!至于费用什么的,后面再说。

一:注册一个微软账号

1、打开官网语音合成注册一个免费账号
如果打不开,可能需要科学上网,另外需要一个邮箱,最好是谷歌邮箱,其他邮箱如QQ邮箱没试过,不清楚,另外最最最最重要的是要有一张信用卡且支持Visa
Android快速集成微软语音服务(Azure认知服务)
2、开通认知服务中的语音Azure 服务
注册账号成功之后来到这个界面
Android快速集成微软语音服务(Azure认知服务)
点击左上角+号添加语音服务,获取密钥和位置/区域,推荐亚洲区(East Asia
Android快速集成微软语音服务(Azure认知服务)

二:集成语音SDK

1、GitHub示例代码
2、看官方文档,安装语音 SDK
跟着文档走,总结一下就是添加语音依赖库
Android快速集成微软语音服务(Azure认知服务)

implementation 'com.microsoft.cognitiveservices.speech:client-sdk:1.26.0'

3、文档中的示例我测试处理,下面放经过我优化调整后的代码,直接可用

import android.util.Log;
import com.microsoft.cognitiveservices.speech.*;
import com.xxx.config.Constants;

/**
 * @author 小红妹
 * @date 2023/3/16
 * @email L22~3535@163.com
 * @package com.xxx.speech
 * @describe  AzureSpeech
 * @copyright 
 */

public class SpeechSynthesis {

    private SpeechConfig speechConfig;
    private SpeechSynthesizer speechSynthesizer;
    private SpeechSynthesisResult speechSynthesisResult;

    public void azureSpeak() {
        // This example requires environment variables named "SPEECH_KEY" and "SPEECH_REGION"
        speechConfig = SpeechConfig.fromSubscription(Constants.SPEECH_KEY1, Constants.SPEECH_REGION);
        // Required for WordBoundary event sentences.
        speechConfig.setProperty(PropertyId.SpeechServiceResponse_RequestSentenceBoundary, "true");
        // Set either the `SpeechSynthesisVoiceName` or `SpeechSynthesisLanguage`.
        speechConfig.setSpeechSynthesisVoiceName(Constants.SPEECH_NAME);//"en-US-JennyNeural"

        String ssml = String.format("<speak version='1.0' xml:lang='en-US' xmlns='http://www.w3.org/2001/10/synthesis' xmlns:mstts='http://www.w3.org/2001/mstts'>"
                .concat(String.format("<voice name='%s'>", Constants.SPEECH_NAME))
                .concat("<mstts:viseme type='redlips_front'/>")
                .concat("The rainbow has seven colors: <bookmark mark='colors_list_begin'/>Red, orange, yellow, green, blue, indigo, and violet.<bookmark mark='colors_list_end'/>.")
                .concat("</voice>")
                .concat("</speak>"));

        assert(speechConfig != null);
       
        //将合成语音输出到当前活动输出设备(例如扬声器)
        AudioConfig audioConfig = AudioConfig.fromDefaultSpeakerOutput();
        speechSynthesizer = new SpeechSynthesizer(speechConfig, audioConfig);
        assert(speechSynthesizer != null);

        // Subscribe to events
        speechSynthesizer.BookmarkReached.addEventListener((o, e) -> {
            System.out.println("BookmarkReached event:");
            System.out.println("\tAudioOffset: " + ((e.getAudioOffset() + 5000) / 10000) + "ms");
            System.out.println("\tText: " + e.getText());
        });

        speechSynthesizer.SynthesisCanceled.addEventListener((o, e) -> {
            System.out.println("SynthesisCanceled event");
        });

        //ok
        speechSynthesizer.SynthesisCompleted.addEventListener((o, e) -> {
            SpeechSynthesisResult result = e.getResult();
            byte[] audioData = result.getAudioData();
            System.out.println("SynthesisCompleted event:");
            System.out.println("\tAudioData: " + audioData.length + " bytes");
            System.out.println("\tAudioDuration: " + result.getAudioDuration());
            result.close();
        });

        speechSynthesizer.SynthesisStarted.addEventListener((o, e) -> {
            System.out.println("SynthesisStarted event");
        });

        speechSynthesizer.Synthesizing.addEventListener((o, e) -> {
            SpeechSynthesisResult result = e.getResult();
            byte[] audioData = result.getAudioData();
            System.out.println("Synthesizing event:");
            System.out.println("\tAudioData: " + audioData.length + " bytes");
            result.close();
        });

        speechSynthesizer.VisemeReceived.addEventListener((o, e) -> {
            System.out.println("VisemeReceived event:");
            System.out.println("\tAudioOffset: " + ((e.getAudioOffset() + 5000) / 10000) + "ms");
            System.out.println("\tVisemeId: " + e.getVisemeId());
        });

        speechSynthesizer.WordBoundary.addEventListener((o, e) -> {
            System.out.println("WordBoundary event:");
            System.out.println("\tBoundaryType: " + e.getBoundaryType());
            System.out.println("\tAudioOffset: " + ((e.getAudioOffset() + 5000) / 10000) + "ms");
            System.out.println("\tDuration: " + e.getDuration());
            System.out.println("\tText: " + e.getText());
            System.out.println("\tTextOffset: " + e.getTextOffset());
            System.out.println("\tWordLength: " + e.getWordLength());
        });

        // Synthesize the SSML
        System.out.println("SSML to synthesize:");
        System.out.println(ssml);
        try {
            //speechSynthesisResult = speechSynthesizer.SpeakSsmlAsync(ssml).get();
            speechSynthesisResult = speechSynthesizer.SpeakText("おはようございます, 朝食を食べましょう!");

            assert(speechSynthesisResult != null);

            if (speechSynthesisResult.getReason() == ResultReason.SynthesizingAudioCompleted) {
                System.out.println("SynthesizingAudioCompleted result");
            }
            else if (speechSynthesisResult.getReason() == ResultReason.Canceled) {
                SpeechSynthesisCancellationDetails cancellation = SpeechSynthesisCancellationDetails.fromResult(speechSynthesisResult);
                System.out.println("CANCELED: Reason=" + cancellation.getReason());

                if (cancellation.getReason() == CancellationReason.Error) {
                    System.out.println("CANCELED: ErrorCode=" + cancellation.getErrorCode());
                    System.out.println("CANCELED: ErrorDetails=" + cancellation.getErrorDetails());
                    System.out.println("CANCELED: Did you set the speech resource key and region values?");
                }
            }

        } catch (Exception ex) {
            Log.e("SpeechSDKDemo", "unexpected " + ex.getMessage());
            assert(false);
        }

        System.exit(0);
    }

    //onDestroy
    public void closeSpeech() {
        // Release speech synthesizer and its dependencies
        speechSynthesizer.close();
        speechConfig.close();

    }

}

这里,将密钥和位置改成你自己的,Constants.SPEECH_KEY1, Constants.SPEECH_REGION替换成自己的,Constants.SPEECH_NAME这个是设置语言,代码中我写的是日语,其他的你们自己改。
官方文档将语音合成到文件中

总结一下

在写之前雄心勃勃,要写一篇网上较好的微软语音合成文章,写着写着没劲了!
哈哈哈哈哈哈哈哈哈哈哈哈哈哈红红火火恍恍惚惚 ~哈哈哈哈哈哈哈哈哈

好吧~
该总结一下,只说关键词
1、注册微软账号,Visa信用卡
2、开通语音服务
3、复制示例代码,修改密钥等参数
4、运行搞定文章来源地址https://www.toymoban.com/news/detail-443236.html

到了这里,关于Android快速集成微软语音服务(Azure认知服务)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 用Azure认知服务开发一个语音翻译机,学英文很爽快

    最近CSDN开展了《0元试用微软 Azure人工智能认知服务,精美礼品大放送》,当前目前活动还在继续,热心的我已经第一时间报名参与,只不过今天才有时间实际的试用。 目前活动要求博文形式分享试用语音转文本、文本转语音、语音翻译、文本分析、文本翻译、语言理解中三

    2024年02月05日
    浏览(45)
  • C# .NET调用OpenAI及微软语音服务实现语音输入及输出

    目前C#调用Open AI有很多的开源库,本文使用的nuget包如下: 都有开源库,所以实现起来就比较简单了,主要难度可能还是注册账号,有能力的可以自己试试,在这儿贴出部分调用的主要代码,项目已开源,Github搜索JamesBaiJun/OpenAI-Azure,记得点个Star。 调用ChatGPT使用Nuget的Open

    2024年02月02日
    浏览(31)
  • 微软(TTS)文本转语音服务API实现

    此博客实现与java实现微软文本转语音(TTS)经验总结_java tts_${简简单单}的博客-CSDN博客之上,首先感谢博客源码的提供,本人在上面添加了一些详细的注释,方便大家跟好的理解和使用,毕竟我已经用原文调试了一下午才调通,一些细节的问题给大家标注出来,免得浪费大家

    2024年02月07日
    浏览(43)
  • 微软语音合成(tts)服务申请和调用

    https://azure.microsoft.com/zh-cn/free/ 这里有个视频教程,根据此完成申请流程: https://www.bilibili.com/video/BV15a4y1W7re?vd_source=bf07f28d37849885d215dc3aea189eba 申请完成后,就可以到这里申请资源: https://portal.azure.com/#home 点击资源组,里面就有部署好的服务了 点击这里,可以获取 subscription

    2024年02月11日
    浏览(41)
  • 我开发了一个【免费】使用微软的文字转语音服务的js库

    尝试过各种TTS的方案,一番体验下来,发现微软才是这个领域的王者,其 Azure文本转语音 服务的转换出的语音效果最为自然,但Azure是付费服务,注册操作付费都太麻烦了。但在其官网上竟然提供了一个 完全体 的演示功能,能够完完整整的体验所有角色语音,说话风格…

    2024年02月05日
    浏览(44)
  • 文字转语音 - 搭建微软tts整合web服务提供api接口(免费)

    微软tts是业界公认文字转语音效果最佳 本文使用docker搭建微软tts服务并提供api接口对外提供服务 对接官方免费在线体验接口,搭建后可免费进行调用使用,不保证永久稳定可用 url :http://127.0.0.1:5003/tts method :POST 参数 类型 描述 text string 语音文字内容 voiceName string 发音人(

    2024年02月11日
    浏览(34)
  • [Unity+OpenAI TTS] 集成openAI官方提供的语音合成服务,构建海王暖男数字人

            最近openAI官方发布了很多新功能,其中就包括了最新发布的TTS语音合成服务的api接口。说到这个语音合成接口,大家可能会比较陌生,但是说到chatgpt官方应用上的聊天机器人,那个台湾腔的海王暖男的声音,可能就有印象了吧。那么从官方文档中,可以发现,openA

    2024年02月04日
    浏览(36)
  • media-微软Azure文字转语音

    media-微软Azure文字转语音 前篇 官方 免费服务 - https://portal.azure.com/?quickstart=True#blade/Microsoft_Azure_Billing/FreeServicesBlade 价格表: https://azure.microsoft.com/zh-cn/pricing/details/cognitive-services/speech-services/ 文字转语音–最像人类声音的免费语音合成服务|微软azure(2021) - https://www.youtube.com

    2024年02月06日
    浏览(34)
  • 文本转语音免费 微软Azure官网,在线就可以转语音。

    使用跨 140 种语言和变体的 400 种神经网络语音吸引全球受众。使用极具表现力和类似人类的声音,使文本阅读器和已启用语音的助理等方案栩栩如生。神经网络文本转语音支持多种朗读风格,包括新闻广播、客户服务、呼喊、耳语以及高兴、悲伤等情感。 地址 文本转语音

    2024年02月05日
    浏览(30)
  • 自主系统与服务:如何实现语音识别的关键技术

    语音识别技术是人工智能领域的一个重要分支,它涉及到自然语言处理、机器学习、深度学习、信号处理等多个领域的知识和技术。在过去的几年里,语音识别技术的发展取得了显著的进展,这主要是由于深度学习和大数据技术的不断发展和进步。 语音识别技术的核心是将人

    2024年02月20日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包