swan.ai.textToAudio

解释 :将文本转换为可以播放的 mp3 文件。

方法参数

Object object

data 参数说明

属性名类型必填默认值说明
texString-合成的文本,使用UTF-8编码,小于512个中文字或者英文数字(文本在百度服务器内转换为GBK后,长度必须小于1024字节)。
ctpString1客户端类型选择,Web端填写固定值1。
lanStringzh固定值zh。语言选择,目前只有中英文混合模式,填写固定值zh。
spdString5语速,取值0-9,默认为5中语速。
pitString5音调,取值0-9,默认为5中语调。
volString5音量,取值0-9,默认为5中音量。
perString0发音人选择, 0为普通女声,1为普通男生,3为情感合成-度逍遥,4为情感合成-度丫丫,默认为普通女声。
successFunction接口调用成功的回调函数
failFunction接口调用失败的回调函数
completeFunction接口调用结束的回调函数(调用成功、失败都会执行)

success 返回参数说明

参数类型说明
filePathString合成的音频文件的路径,此路径为临时路径且在当次回调中有效

示例

语音合成 swan.ai.textToAudio - 图1请使用百度APP扫码

图片示例

语音合成 swan.ai.textToAudio - 图2

语音合成 swan.ai.textToAudio - 图3

语音合成 swan.ai.textToAudio - 图4

代码示例1

在开发者工具中预览效果

  • 在 js 文件中
  1. Page({
  2. data: {
  3. sourceIndex: 5,
  4. sourceArray: ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'],
  5. sizeIndex: 5,
  6. sizeArray: ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'],
  7. countIndex: 5,
  8. countArray: ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'],
  9. perIndex: 1,
  10. perArray: ['普通女声', '普通男声', '情感合成-度逍遥', '情感合成-度丫丫'],
  11. msg: 'hello,这是一段测试语音合成的文字'
  12. },
  13. sourceChange(e) {
  14. this.setData('sourceIndex', e.detail.value);
  15. },
  16. sizeChange(e) {
  17. this.setData('sizeIndex', e.detail.value);
  18. },
  19. countChange(e) {
  20. this.setData('countIndex', e.detail.value);
  21. },
  22. perChange(e) {
  23. this.setData('perIndex', e.detail.value);
  24. },
  25. textToAudio() {
  26. let tex = this.getData('msg');
  27. let sourceIndex = this.getData('sourceIndex');
  28. let sizeIndex = this.getData('sizeIndex');
  29. let countIndex = this.getData('countIndex');
  30. let perIndex = this.getData('perIndex');
  31. // AI系列的api有宿主使用限制,只可在百度App中使用,建议使用时加一层判断防止代码报未知错误
  32. let host = swan.getSystemInfoSync().host;
  33. if (host === 'baiduboxapp') {
  34. swan.ai.textToAudio({
  35. tex,
  36. ctp: '1',
  37. lan: 'zn',
  38. spd: JSON.stringify(this.data.sourceArray[sourceIndex]),
  39. pit: JSON.stringify(this.data.sizeArray[sizeIndex]),
  40. vol: JSON.stringify(this.data.countArray[countIndex]),
  41. per: JSON.stringify(this.data.perArray[perIndex]),
  42. success: res => {
  43. console.log('ai.textToAudio success', res);
  44. swan.showToast({
  45. title: '合成成功',
  46. icon: 'none'
  47. });
  48. },
  49. fail: err => {
  50. console.log('ai.textToAudio fail', err);
  51. }
  52. });
  53. }
  54. else {
  55. swan.showToast({
  56. title: '此api目前仅可在百度App上使用',
  57. icon: 'none'
  58. });
  59. }
  60. }
  61. });

代码示例2 - 普通女声

在开发者工具中预览效果

  • 在 js 文件中
  1. Page({
  2. data: {
  3. },
  4. textToAudio(){
  5. // AI系列的api有宿主使用限制,只可在百度App中使用,建议使用时加一层判断防止代码报未知错误
  6. let host = swan.getSystemInfoSync().host;
  7. if (host === 'baiduboxapp') {
  8. swan.ai.textToAudio({
  9. tex: 'hello,这是一段测试语音合成的文字',
  10. ctp: '1',
  11. lan: 'zh',
  12. spd: '5',
  13. pit: '5',
  14. vol: '5',
  15. per: '0',
  16. success: res => {
  17. console.log('ai.textToAudio success', res);
  18. swan.showToast({
  19. title: '合成成功',
  20. icon: 'none'
  21. });
  22. },
  23. fail: err => {
  24. console.log('ai.textToAudio fail', err);
  25. }
  26. });
  27. }
  28. else {
  29. swan.showToast({
  30. title: '此api目前仅可在百度App上使用',
  31. icon: 'none'
  32. });
  33. }
  34. }
  35. });

代码示例3 - 普通男声

在开发者工具中预览效果

  • 在 js 文件中
  1. Page({
  2. data: {
  3. },
  4. textToAudio(){
  5. // AI系列的api有宿主使用限制,只可在百度App中使用,建议使用时加一层判断防止代码报未知错误
  6. let host = swan.getSystemInfoSync().host;
  7. if (host === 'baiduboxapp') {
  8. swan.ai.textToAudio({
  9. tex: 'hello,这是一段测试语音合成的文字',
  10. ctp: '1',
  11. lan: 'zh',
  12. spd: '5',
  13. pit: '5',
  14. vol: '5',
  15. per: '1',
  16. success: res => {
  17. console.log('ai.textToAudio success', res);
  18. swan.showToast({
  19. title: '合成成功',
  20. icon: 'none'
  21. });
  22. },
  23. fail: err => {
  24. console.log('ai.textToAudio fail', err);
  25. }
  26. });
  27. }
  28. else {
  29. swan.showToast({
  30. title: '此api目前仅可在百度App上使用',
  31. icon: 'none'
  32. });
  33. }
  34. }
  35. });

代码示例4 - 情感合成-度逍遥

在开发者工具中预览效果

  • 在 js 文件中
  1. Page({
  2. data: {
  3. },
  4. textToAudio(){
  5. // AI系列的api有宿主使用限制,只可在百度App中使用,建议使用时加一层判断防止代码报未知错误
  6. let host = swan.getSystemInfoSync().host;
  7. if (host === 'baiduboxapp') {
  8. swan.ai.textToAudio({
  9. tex: 'hello,这是一段测试语音合成的文字',
  10. ctp: '1',
  11. lan: 'zh',
  12. spd: '5',
  13. pit: '5',
  14. vol: '5',
  15. per: '3',
  16. success: res => {
  17. console.log('ai.textToAudio success', res);
  18. swan.showToast({
  19. title: '合成成功',
  20. icon: 'none'
  21. });
  22. },
  23. fail: err => {
  24. console.log('ai.textToAudio fail', err);
  25. }
  26. });
  27. }
  28. else {
  29. swan.showToast({
  30. title: '此api目前仅可在百度App上使用',
  31. icon: 'none'
  32. });
  33. }
  34. }
  35. });

代码示例5 - 情感合成-度丫丫

在开发者工具中预览效果

  • 在 js 文件中
  1. Page({
  2. data: {
  3. },
  4. textToAudio(){
  5. // AI系列的api有宿主使用限制,只可在百度App中使用,建议使用时加一层判断防止代码报未知错误
  6. let host = swan.getSystemInfoSync().host;
  7. if (host === 'baiduboxapp') {
  8. swan.ai.textToAudio({
  9. tex: 'hello,这是一段测试语音合成的文字',
  10. ctp: '1',
  11. lan: 'zh',
  12. spd: '5',
  13. pit: '5',
  14. vol: '5',
  15. per: '4',
  16. success: res => {
  17. console.log('ai.textToAudio success', res);
  18. swan.showToast({
  19. title: '合成成功',
  20. icon: 'none'
  21. });
  22. },
  23. fail: err => {
  24. console.log('ai.textToAudio fail', err);
  25. }
  26. });
  27. }
  28. else {
  29. swan.showToast({
  30. title: '此api目前仅可在百度App上使用',
  31. icon: 'none'
  32. });
  33. }
  34. }
  35. });

Bug & Tip

重置 App Secret 会导致此功能无法使用。