2014年1月31日 星期五

Google TTS by WPF C#

1. OS: Windows 8.1
2. Tool: Visual Studio 2012
3. Coding
WPF :
<Window x:Class="WPFGoogleTTS.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525" >
    <StackPanel>
        <TextBox Name="tb1" Height="30" Width="300" >這是一個測試</TextBox>
        <Button Name="btn1" Click="btn1_Click" Width="150" Height="50" ></Button>
        <MediaElement Name="med1" Width="20" Height="20" LoadedBehavior="Manual" >
           
        </MediaElement>
    </StackPanel>
</Window>
C# :
namespace WPFGoogleTTS
{
    /// <summary>
    /// MainWindow.xaml 的互動邏輯
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void btn1_Click(object sender, RoutedEventArgs e)
        {
            var chinese = "這是一個測試。";
            string pathx = "http://translate.google.com/translate_tts?ie=UTF-8&tl=zh-TW&q=" + tb1.Text ;
            Uri u = new Uri(pathx, UriKind.RelativeOrAbsolute);
            med1.Source = u;
            med1.Play();
        }
    }
}

2014年1月12日 星期日

emgu-無法載入 DLL 'opencv_core290': 找不到指定的模組

1. Hardware : ASUS X450J, OS: WIndows 8.1(x64)
2. Tools: VS2012
3. Error as title.
4. Solve by emgu wiki solution
    copy C:\Emgu\emgucv-windows-universal-cuda 2.9.0.1922\bin\x64 folder into
    VS2012 Project xxx/bin/.debug

2014年1月9日 星期四

Kinect ShapeGame 中文化

1. Kinect SDK 1.8 ShapeGame 範例,VS2012 @ Windows 8 ASUS X450J
2. MSSpeech_SR_zh_TW_Tele.msi V11, 微軟已不開放下載 http://www.vdisk.cn/down/index/10996836
3. 修改 SpeechRecognizer.cs
 private static RecognizerInfo GetKinectRecognizer()
        {
            //Func<RecognizerInfo, bool> matchingFunc = r =>
            //{
            //    string value;
            //    r.AdditionalInfo.TryGetValue("Kinect", out value);
            //    return "True".Equals(value, StringComparison.InvariantCultureIgnoreCase) && "en-US".Equals(r.Culture.Name, StringComparison.InvariantCultureIgnoreCase);
            //};
            //return SpeechRecognitionEngine.InstalledRecognizers().Where(matchingFunc).FirstOrDefault();
            // 中文化
            RecognizerInfo SPE = SpeechRecognitionEngine.InstalledRecognizers()[0];
            for (int i = 0; i < SpeechRecognitionEngine.InstalledRecognizers().Count; i++)
            {
                if (SpeechRecognitionEngine.InstalledRecognizers()[i].Culture.Name == "zh-TW")
                {
                    SPE = SpeechRecognitionEngine.InstalledRecognizers()[i];
                    break;
                }
            }
            return SPE;
        }
4.
5. 下載



2014年1月5日 星期日

Kinect Skeleton Raw

Ref: Kinect for Windows SDK 1.8
1. Try to get skeleton raw data in a few statements.
2. Procedure
2-1 Add reference
2-2 using namespace
2-3 add data into a Access data table
3. Coding
// 1. Add Ref, using
using Microsoft.Kinect;
using System.Data.OleDb;

namespace WPFSkeletonRaw
{
    /// <summary>
    /// MainWindow.xaml 的互動邏輯
    /// </summary>
    public partial class MainWindow : Window
    {
        // 2.
        KinectSensor sensor;
        OleDbConnection conn = new OleDbConnection();
         
        public MainWindow()
        {
            InitializeComponent();
            // 3.
            sensor =  KinectSensor.KinectSensors[0];
            sensor.SkeletonStream.Enable();
            sensor.SkeletonFrameReady += sensor_SkeletonFrameReady;
            sensor.Start();
            sensor.ElevationAngle = 10;
            conn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Database1.accdb";
            conn.Open();
            for (int i = 0; i < 20; i++)
                for (int j = 0; j < 3; j++)
                {
                    TranslateTransform TR = new TranslateTransform(j * 100, i * 30);
                    txtbx[i, j] = new TextBox();
                    txtbx[i, j].Width = 90;
                    txtbx[i, j].Height = 25;
                    txtbx[i, j].RenderTransform = TR;
                    Can1.Children.Add(txtbx[i, j]);
                }


        }

        TextBox[,] txtbx = new TextBox[20, 3];

        void sensor_SkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e)
        {
       
            Skeleton[] skeletons = new Skeleton[0];

            using (SkeletonFrame skeletonFrame = e.OpenSkeletonFrame())
            {
                if (skeletonFrame != null)
                {
                    skeletons = new Skeleton[skeletonFrame.SkeletonArrayLength];
                    skeletonFrame.CopySkeletonDataTo(skeletons);
                }
            }
         
                foreach (Skeleton skeleton in skeletons)
                {
                    if (skeleton.TrackingState == SkeletonTrackingState.Tracked)
                    {
                        //DrawTrackedSkeletonJoints(skeleton.Joints);
                        for (int i=0; i<20; i++)
                        {
                            string x, y, z;
                            x = skeleton.Joints[(JointType)i].Position.X.ToString();
                            y = skeleton.Joints[(JointType)i].Position.Y.ToString();
                            z = skeleton.Joints[(JointType)i].Position.Z.ToString();
                            txtbx[i, 0].Text = x;
                            txtbx[i, 1].Text = y;
                            txtbx[i, 2].Text = z;
                          OleDbCommand cmmd = new OleDbCommand("INSERT INTO JointTrace (JointNumber, X,Y,Z) Values("
                            + i.ToString() + ", " + x.ToString() + ", " + y.ToString() + ", " + z.ToString() + ")", conn);
                          cmmd.ExecuteNonQuery();
                                      }
                    }
                    else if (skeleton.TrackingState == SkeletonTrackingState.PositionOnly)
                    {
                        //txtbk.Text += skeleton.Joints[0].Position.ToString() + "\r\n";
                    }
                }

        }

        private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
        {
            sensor.SkeletonStream.Disable();
            sensor.Stop();
            conn.Close();
        }
    }

4. Example
    Example