c#字符串转换成声音播放的问题

我深知我该努力了 2017-07-14 02:57:41
在网上搜了很多代码 ,都是报这个问题 ,帮忙看下 我没招了
然后注册dll也是不成功,错误:{模块已加载,但找不到入口点}

...全文
524 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
XiaoYi96 2017-07-21
  • 打赏
  • 举报
回复
引用 17 楼 kihkia 的回复:
引用 16 楼 XiaoYi96 的回复:
[quote=引用 15 楼 kihkia 的回复:] [quote=引用 9 楼 XiaoYi96 的回复:] 楼主,有实例吗?
邮箱给我,我发给你
liuxiaoyi@fullwiser.com 谢谢楼主[/quote] 发了 ,form3是播放[/quote]十分感谢大神,我收到了
  • 打赏
  • 举报
回复
引用 16 楼 XiaoYi96 的回复:
引用 15 楼 kihkia 的回复:
[quote=引用 9 楼 XiaoYi96 的回复:] 楼主,有实例吗?
邮箱给我,我发给你
liuxiaoyi@fullwiser.com 谢谢楼主[/quote] 发了 ,form3是播放
XiaoYi96 2017-07-21
  • 打赏
  • 举报
回复
引用 15 楼 kihkia 的回复:
引用 9 楼 XiaoYi96 的回复:
楼主,有实例吗?
邮箱给我,我发给你
liuxiaoyi@fullwiser.com 谢谢楼主
  • 打赏
  • 举报
回复
引用 9 楼 XiaoYi96 的回复:
楼主,有实例吗?
邮箱给我,我发给你
失落的神庙 2017-07-19
  • 打赏
  • 举报
回复
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Net;
using System.Runtime.InteropServices;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication4
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

        }

        private void button1_Click(object sender, EventArgs e)
        {
            //http://tts.baidu.com/text2audio?idx=1&tex=%E6%9D%A5%E5%95%8A!%E6%93%8D%E6%88%91%E5%95%8A&cuid=baidu_speech_demo&cod=2&lan=zh&ctp=1&pdt=1&spd=5&per=4&vol=7&pit=5A-1&qq-pf-to=pcqq.group
            string text = UrlEncoding(textBox1.Text,Encoding.UTF8);
            string url = "http://tts.baidu.com/text2audio?idx=1&tex="+text+"&cuid=baidu_speech_demo&cod=2&lan=zh&ctp=1&pdt=1&spd=5&per=4&vol=7&pit=5A-1&qq-pf-to=pcqq.group";

            DownloadOthers(url, "a.mp3");
            clsMCI cm = new clsMCI();
            cm.FileName = "a.mp3";
            cm.play();

        }
        private static void DownloadOthers(string fileUrl, string localFilePath)
        {
            try
            {
                WebClient webClint = new WebClient();
                webClint.Encoding = Encoding.UTF8;
                webClint.DownloadFile(new Uri(fileUrl), localFilePath);
            }
            catch { }
        }
        public static string UrlEncoding(string str, Encoding encoding)
        {
            return System.Web.HttpUtility.UrlEncode(str, encoding);
        }
        /// <summary>
        /// clsMci 的摘要说明。
        /// </summary>
        public class clsMCI
        {
            public clsMCI()
            {
            }
            //定义API函数使用的字符串变量 
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
            private string Name = "";
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
            private string durLength = "";
            [MarshalAs(UnmanagedType.LPTStr, SizeConst = 128)]
            private string TemStr = "";
            int ilong;
            //定义播放状态枚举变量
            public enum State
            {
                mPlaying = 1,
                mPuase = 2,
                mStop = 3
            };
            //结构变量
            public struct structMCI
            {
                public bool bMut;
                public int iDur;
                public int iPos;
                public int iVol;
                public int iBal;
                public string iName;
                public State state;
            };
            public structMCI mc = new structMCI();
            //取得播放文件属性
            public string FileName
            {
                get
                {
                    return mc.iName;
                }
                set
                {
                    try
                    {
                        TemStr = "";
                        TemStr = TemStr.PadLeft(127, Convert.ToChar(" "));
                        Name = Name.PadLeft(260, Convert.ToChar(" "));
                        mc.iName = value;
                        ilong = APIClass.GetShortPathName(mc.iName, Name, Name.Length);
                        Name = GetCurrPath(Name);
                        Name = "open " + Convert.ToChar(34) + Name + Convert.ToChar(34) + " alias media";
                        ilong = APIClass.mciSendString("close all", TemStr, TemStr.Length, 0);
                        ilong = APIClass.mciSendString(Name, TemStr, TemStr.Length, 0);
                        ilong = APIClass.mciSendString("set media time format milliseconds", TemStr, TemStr.Length, 0);
                        mc.state = State.mStop;
                    }
                    catch
                    {
                    }
                }
            }
            //播放
            public void play()
            {
                TemStr = "";
                TemStr = TemStr.PadLeft(127, Convert.ToChar(" "));
                APIClass.mciSendString("play media", TemStr, TemStr.Length, 0);
                mc.state = State.mPlaying;
            }
            //停止
            public void StopT()
            {
                TemStr = "";
                TemStr = TemStr.PadLeft(128, Convert.ToChar(" "));
                ilong = APIClass.mciSendString("close media", TemStr, 128, 0);
                ilong = APIClass.mciSendString("close all", TemStr, 128, 0);
                mc.state = State.mStop;
            }
            public void Puase()
            {
                TemStr = "";
                TemStr = TemStr.PadLeft(128, Convert.ToChar(" "));
                ilong = APIClass.mciSendString("pause media", TemStr, TemStr.Length, 0);
                mc.state = State.mPuase;
            }
            private string GetCurrPath(string name)
            {
                if (name.Length < 1) return "";
                name = name.Trim();
                name = name.Substring(0, name.Length - 1);
                return name;
            }
            //总时间
            public int Duration
            {
                get
                {
                    durLength = "";
                    durLength = durLength.PadLeft(128, Convert.ToChar(" "));
                    APIClass.mciSendString("status media length", durLength, durLength.Length, 0);
                    durLength = durLength.Trim();
                    if (durLength == "") return 0;
                    return (int)(Convert.ToDouble(durLength) / 1000f);
                }
            }
            //当前时间
            public int CurrentPosition
            {
                get
                {
                    durLength = "";
                    durLength = durLength.PadLeft(128, Convert.ToChar(" "));
                    APIClass.mciSendString("status media position", durLength, durLength.Length, 0);
                    mc.iPos = (int)(Convert.ToDouble(durLength) / 1000f);
                    return mc.iPos;
                }
            }
        }
        public class APIClass
        {
            [DllImport("kernel32.dll", CharSet = CharSet.Auto)]
            public static extern int GetShortPathName(
             string lpszLongPath,
             string shortFile,
             int cchBuffer
          );
            [DllImport("winmm.dll", EntryPoint = "mciSendString", CharSet = CharSet.Auto)]
            public static extern int mciSendString(
               string lpstrCommand,
               string lpstrReturnString,
               int uReturnLength,
               int hwndCallback
              );
        }


    }
}
ilikeff8 2017-07-19
  • 打赏
  • 举报
回复
或者用WPF,已经集成自带了 [code=csharp][/ static public void Speak(string say) { ThreadPool.QueueUserWorkItem((obj) => { using (SpeechSynthesizer speechSynthesizer = new SpeechSynthesizer()) { speechSynthesizer.Speak(say); speechSynthesizer.Dispose(); } }); }code]
ilikeff8 2017-07-19
  • 打赏
  • 举报
回复
直接下个ms TTS安装包
  • 打赏
  • 举报
回复
引用 5 楼 zhaoyu_m69 的回复:
没听说过...还可以这样?
我搞出来,但是响应太慢了
  • 打赏
  • 举报
回复
引用 3 楼 From_TaiWan 的回复:
字符串数据,可以转为音频数据?
可以的老铁 ,做好了
  • 打赏
  • 举报
回复
引用 4 楼 XiaoYi96 的回复:
楼主,解决这问题之后告诉我一声,我也想知道

终于听到声音了
就是播放的响应时间有点慢

用讯飞开放平台的API ,现成的代码 调用dll就行了
Haou2020 2017-07-14
  • 打赏
  • 举报
回复
没听说过...还可以这样?
秋的红果实 2017-07-14
  • 打赏
  • 举报
回复
字符串数据,可以转为音频数据?
  • 打赏
  • 举报
回复
有没有人呀帮忙看看啊我滴老大哥们
  • 打赏
  • 举报
回复
改了一下 ,又报这个错了 ,Microsoft Speech SDK 和语音包都安装了

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧